0
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实现上的解密不好?
- 节点需要一个缓冲你看我提供的的
encrypt3DES
- 开始我把从加密缓冲输出的原始直入解密方法
我在做什么这里错了吗?
免责声明 不,这不会用于生产。我只是玩弄左右,所以请与“你不知道你这样做,你不应该做什么”持有谈
当使用流时,我得到了相同的结果,我相信*这是正确的实现,因为节点中的密码也是流,因此在使用update时并不打算分配给新变量。 –
我仔细阅读了CryptoJS的文档,我相信*你错了。在你发表评论之前,你有没有尝试**我的解决方案?如果你想将它们用作流,我认为你应该使用'write'或'read'方法。我不认为他们是*汇*或*来源*。 –
是的,我第一次使用本地流API(监听数据和结束,使用输入数据消防流)。我会给它多一些镜头,如果你是对的,我一定会返回并标记正确的:-) –