var cardInfo = "<Card><CVV></CVV><CardNumber></CardNumber><ExpMonth></ExpMonth><ExpYear></ExpYear><Member></Member></Card>"
function genKeyPair(passphrase){
var iv = crypto.createHash('md5').update(passphrase).digest('hex').substring(0, 8)
var key = crypto.createHash('md5').update(passphrase).digest('hex').substring(0, 24)
return {
key: key,
iv: iv
}
}
function encrypt3DES(key, vector, data){
var encryptor = crypto.createCipheriv('des3', key, vector)
var raw = new Buffer(data)
encryptor.update(raw)
var encrypted = encryptor.final()
return encrypted
}
function decrypt3DES(key, vector, data){
var decryptor = crypto.createDecipheriv('des3', key, vector)
decryptor.update(data)
var decrypted = decryptor.final()
return decrypted
}
var key = genKeyPair('test')
var data3DES = encrypt3DES(key.key, key.iv, cardInfo)
var decryptedCard = decrypt3DES(key.key, key.iv, data3DES)
Итак, я получаю «плохой расшифровать» на decryptor.final() и не могу понять, почему.Плохой дешифрование при реализации NodeJS Triple DES?
- Node ожидает буфер при шифровании, так что вы видите, что предусмотрено, что в начале
encrypt3DES
- Я положил необработанный выходной буфер из шифрования прямо в методе расшифровка
Что я делаю Неправильно здесь?
ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ Нет, это не будет использоваться в производстве. Я просто играл вокруг так, пожалуйста, держите с «вы не знаете, что вы делаете, чтобы вы не должны делать это» говорить
Я получаю те же результаты при использовании потоков, и я считаю, что это правильная реализация, поскольку шифры в узле также являются потоками и как таковые не предназначены для назначения новой переменной при использовании обновления. –
Я внимательно прочитал документы CryptoJS, и я * считаю, что вы ошибаетесь. Вы ** пробовали ** мое решение, прежде чем вы дали этот комментарий? Я думаю, что вместо этого вы должны использовать метод 'write' или' read', если хотите использовать их как потоки. Я не думаю, что они * поглощают * или * источники *. –
Да, в первый раз я фактически использовал собственный API потоков (прослушивание данных и завершение, fire stream.end с входными данными). Я собираюсь дать ему еще несколько снимков, и если вы правы, я обязательно вернусь и отметю правильно :-) –