【发布时间】:2015-11-24 07:59:31
【问题描述】:
我正在使用 node.js 中的crypto npm 模块加密 音频 文件,并尝试在 中解密 android端使用相同的算法和密钥。
加密代码是:
加密参数
var crypto = require('crypto'),
algorithm = 'aes-256-cbc',
password = 'somepassword'; //encyption parameters
加密函数
function encrypt(buffer) {
var cipher = crypto.createCipher(algorithm, password);
var crypted = Buffer.concat([cipher.update(buffer), cipher.final()]);
return crypted;
}
现在,对于 Decryption ,我们需要使用一些 IV(Initialisation Vector),正如研究表明 not to use same IV for any two files。
所以,我现在只想知道如何设置自定义 IV,以及如何在 node.js 中使用加密或任何方式为每个文件生成随机或单独的 IV加密期间的其他模块。
如果有人能在这方面帮助我,那就太好了。
【问题讨论】:
-
如果您使用的是真实密码(字符少,字符集有限),那么您不应该使用这个 node.js 代码。这确实会调用 MD5 从不够安全的密码中生成密钥。您应该使用 PBKDF2 从具有随机盐和多次迭代(超过 9.000)的密码中派生密钥。然后你还需要生成一个随机 IV。
-
谢谢@ArtjomB。如果您能解释得更多,以便更好、更清楚地理解它,那将会更有帮助。
标签: android node.js encryption cryptography aes