使用NodeJs createDecipheriv解密密文。 我究竟做错了什么?

我有下面的代码应该解密一个encryption的文本:

var crypto = require('crypto'); var Buffer = require('buffer').Buffer; var iv = new Buffer('the-iv', 'binary'); //length=16 var key = new Buffer('the-secret-key', 'binary');//length=30 var encryptedText = new Buffer('base64-encoded-encrypted-data', 'base64'); var decipher = crypto.createDecipheriv('aes-128-cbc', key, iv); //using the aes-128-cbc algorithm decrypted = decipher.update(encryptedText, "binary", 'utf8'); decrypted += decipher.final('utf8'); 

当我执行脚本node test-main.js ,出现以下错误:

 node-crypto : Invalid key length 30 crypto.js:355 this._binding.initiv(cipher, toBuf(key), toBuf(iv)); ^ Error: DecipherInitIv error at new Decipheriv (crypto.js:355:17) at Object.Decipheriv (crypto.js:352:12) at Object.<anonymous> (path/to/file/test-main.js:9:19) at Module._compile (module.js:456:26) at Object.Module._extensions..js (module.js:474:10) at Module.load (module.js:356:32) at Function.Module._load (module.js:312:12) at Function.Module.runMain (module.js:497:10) at startup (node.js:119:16) at node.js:901:3 

我的NodeJs版本是0.10.15

我不知道我在做什么错误/缺失。

请尝试使用密钥长度为16. aes-128-cbc使用128位密钥。

  var crypto = require('crypto');// dont forget to include this line i am just unable to put this in the code var data = JSON.stringify({someKey: "someValue"}); console.log('Original cleartext: ' + data); var algorithm = 'aes-128-ecb'; var key = 'myVeryTopSecretK'; var clearEncoding = 'buffer'; var cipherEncoding = 'base64'; var cipher = crypto.createCipheriv(algorithm, key, new Buffer("")); var cipherChunks = []; cipherChunks.push(cipher.update(new Buffer(JSON.stringify({someKey: "someValue"}), 'utf8'), clearEncoding, cipherEncoding)); cipherChunks.push(cipher.final(cipherEncoding)); console.log(cipherEncoding + ' ciphertext: ' + cipherChunks.join('')); var decipher = crypto.createDecipheriv(algorithm, key, new Buffer("")); var plainChunks = []; for (var i = 0;i < cipherChunks.length;i++) { plainChunks.push(decipher.update(cipherChunks[i], cipherEncoding, clearEncoding)); } plainChunks.push(decipher.final(clearEncoding)); console.log("UTF8 plaintext deciphered: " + plainChunks.join('')); //// dont forget to include this line i am just unable to put this in the code var crypto = require('crypto');