【发布时间】:2020-11-13 14:16:57
【问题描述】:
我正在使用以下代码,试图破译十六进制消息“EF963FF7828658A599F3041510671E88”,十六进制密钥为“000000000000000000000000000000000”,同样为“000000000000000000000”
const crypto = require('crypto');
function decrypt(messageHex, keyHex, ivHex) {
const key = Buffer.from(keyHex, 'hex');
const iv = Buffer.from(ivHex, 'hex');
const decipher = crypto.createDecipheriv('aes-128-cbc', key, iv);
let decrypted = decipher.update(messageHex, 'hex');
decrypted += decipher.final();
return decrypted;
}
const decryptedCipherText = decrypt(
'EF963FF7828658A599F3041510671E88',
'00000000000000000000000000000000',
'00000000000000000000000000000000',
);
console.log('Decoded Ciphertext: ' + decryptedCipherText);
我收到此错误:
internal/crypto/cipher.js:170
const ret = this[kHandle].final();
^
Error: error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt
at Decipheriv.final (internal/crypto/cipher.js:170:29)
at decrypt (/Users/manuelmertl/workspace/coaaas/ntag/index3.js:9:27)
at Object.<anonymous> (/Users/manuelmertl/workspace/coaaas/ntag/index3.js:13:27)
at Module._compile (internal/modules/cjs/loader.js:955:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:991:10)
at Module.load (internal/modules/cjs/loader.js:811:32)
at Function.Module._load (internal/modules/cjs/loader.js:723:14)
at Function.Module.runMain (internal/modules/cjs/loader.js:1043:10)
at internal/main/run_main_module.js:17:11 {
library: 'digital envelope routines',
function: 'EVP_DecryptFinal_ex',
reason: 'bad decrypt',
code: 'ERR_OSSL_EVP_BAD_DECRYPT'
}
虽然我期待解密函数的返回值:
C704DE5F1EACC0403D0000DA5CF60941
我的错误在哪里?
谢谢你:)
【问题讨论】:
-
必须禁用填充:
decipher.setAutoPadding(false);。此外,update(第三个参数)和final(第一个参数)的输出编码必须设置为hex。 -
谢谢你,@Topaco - 它就是这样工作的。我将在上面发布我更新的代码。谢谢:)
标签: node.js cryptography hex