私は、文字列を暗号化し、次のコードがあります。ノードv8.9.0エラー:無効なキーの長さcrypto.createCipheriv
var crypto = require('crypto'),
algorithm = 'aes-128-cbc',
key = new Buffer('9vApxLk5G3PAsJrM', 'utf8'),
iv = new Buffer('FnJL7EDzjqWjcaY9', 'utf8');
function encrypt(text, key){
/* GET - crypted */
try {
var cipher = crypto.createCipheriv(algorithm, key, iv),
crypted = cipher.update(text, 'utf8', 'hex');
crypted += cipher.final('hex');
return crypted;
} catch(e) { return console.log(e)}
}
console.log(encrypt('blablabla', key))
を、私はノードv8.9.0でこのコードを実行すると、私はこのエラーを取得:
をError: Invalid key length
at new Cipheriv (crypto.js:219:16)
at Object.Cipheriv (crypto.js:217:12)
私は異なるキーと静脈の長さを試していますが、私はいつも同じエラーが発生します...だから、キーの長さを書く必要がありますか?
crypto.createCipherivを使用する必要があります.crypto.createCipherは、新しいノードのバージョンと新しいノードのバージョンでdepictingされるため、describe Developersはそのpreviusバージョンより20%高速です。
コードに問題はありません。 Node @ 8.4.0で試してみました。開いている問題がないかどうかを見てきましたか?これはバグや互換性の破損のように見えます。 – Techniv
okありがとう..iノードのセクションにこれを投稿しようとするかもしれません。おそらくノード8.9.0のバグです。テストのために – John
ドキュメントに基づいて、 'createCipherv'も' utf-8'でエンコードされた文字列理論的には 'Buffer'は必要ないはずです。文字列を直接渡してみてください。 – James