[英]aes.js & crypto.js best use
快速入门指南告诉我们,我们可以通过以下方式使用aes.js :
var encrypted = CryptoJS.AES.encrypt("Message", "Secret Passphrase");
var decrypt = CryptoJS.AES.decrypt(encrypted, "Secret Passphrase");
但这足够安全吗? 加密的数组包含很多信息(密钥,iv,盐,密文)。 但是使用PBKDF2派生密码不是更安全吗? 像这样 :
var salt = CryptoJS.lib.WordArray.random(128/8);
var key512Bits1000Iterations = CryptoJS.PBKDF2("Secret Passphrase", salt, { keySize: 512/32, iterations: 1000 });
var iv = CryptoJS.enc.Hex.parse('101112131415161718191a1b1c1d1e1f');
encrypted = CryptoJS.AES.encrypt("Message", key512Bits1000Iterations, { iv: iv });
var decrypt = CryptoJS.AES.decrypt(encrypted, key512Bits1000Iterations, { iv: iv });
谢谢 !
如果您查看aes.js页面的底部,则会发现:
使用OpenSSL加密:
openssl enc -aes-256-cbc -in infile -out outfile -pass pass:"Secret Passphrase" -e -base64
用CryptoJS解密:
<script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/aes.js"></script>
<script>
var decrypted = CryptoJS.AES.decrypt(openSSLEncrypted, "Secret Passphrase");
</script>
因此,如果您使用密码短语,则aes.js
将使用与OpenSSL兼容的密钥派生。
现在,如果您查看由OpenSSL执行的密钥派生机制EVP_BytesToKey ,您会发现以下几点 :
较新的应用程序应使用更多标准算法(例如PKCS#5v2.1中定义的PBKDF2)进行密钥派生。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.