2017-05-17 2 views
5

現在、NodeJSでデータを暗号化しようとしていますが、createCipherrecommendedではないというNode APIドキュメントを読みました。Nodejs createCipher vs createCipheriv

crypto.createCipherの実装では、()ダイジェストMD5に設定されたアルゴリズム、 一回の反復、及び無塩と のOpenSSL関数EVP_BytesToKeyを使用してキーを導出します。塩の欠如は辞書攻撃を可能にする 同じパスワードとして常に同じキーを作成します。 回数が少なく、暗号なしで安全なハッシュアルゴリズムを使用すると、パスワード を非常に高速にテストできます。

開発者が独自の使用crypto.pbkdf2(上のキーとIV を導出することをお勧めします代わりに EVP_BytesToKeyのPBKDF2使用するためにOpenSSLのの勧告に沿って

)とCipherオブジェクトを作成するためにcrypto.createCipheriv() を使用するには。

createCipherはまだ安心してデータを暗号化するための実行可能で安全な方法ですか?このメソッドは推奨されなくなりましたか? よく知られた攻撃者が潜在的にデータを復号することは可能でしょうか?

createCipherivを使用するソリューションは、常によりも優先される必要がありますか?

他の詳細やお勧めがありがとうございます。

答えて

-2

createCipheriv/createDecipherivもちろん好ましい 使用例:

const crypto = require('crypto') function encrypt(text){ var cipher = crypto.createCipheriv('aes-256-cbc', new Buffer('passwordpasswordpasswordpassword'), new Buffer('vectorvector1234')) var crypted = cipher.update(text, 'utf8', 'hex') crypted += cipher.final('hex') return crypted } function decrypt(text){ var decipher = crypto.createDecipheriv('aes-256-cbc', new Buffer('passwordpasswordpasswordpassword'), new Buffer('vectorvector1234')) var dec = decipher.update(text, 'hex', 'utf8') dec += decipher.final('utf8') return dec }

+1

なぜことが好ましいですか? – andrsnn

+0

iv - https://en.wikipedia.org/wiki/Initialization_vectorを表します。 – IvanM

関連する問題