node.js从随机源创build初始化向量(IV)

如何在NodeJS中随机创build一个初始化向量(IV),就像我在PHP中做的那样:

$iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC), MCRYPT_RAND); 

crypto.createCipheriv我认为crypto.createCipheriv可以帮助,但没有。

您处于正确的轨道,仍然需要使用:

 Crypto.createCipheriv() 

可以生成随机初始化向量的函数是:

 Crypto.randomBytes(16) 

16表示满足向量所需长度所需的字节数。

举个例子:

 var iv = Crypto.randomBytes(16); var cipher = Crypto.createCipheriv('aes-128-cbc', new Buffer(<128 bit password>), iv); var encrypted = cipher.update(clearText); var finalBuffer = Buffer.concat([encrypted, cipher.final()]); //Need to retain IV for decryption, so this can be appended to the output with a separator (non-hex for this example) var encryptedHex = iv.toString('hex') + ':' + finalBuffer.toString('hex') 

为了完整起见,下面是解密上述encryptedHex的例子

 var encryptedArray = encryptedHex.split(':'); var iv = new Buffer(encryptedArray[0], 'hex'); var encrypted = new Buffer(encryptedArray[1], 'hex'); var decipher = Crypto.createDecipheriv('aes-128-cbc', new Buffer(<128 bit password>), iv); var decrypted = decipher.update(encrypted); var clearText = Buffer.concat([decrypted, decipher.final()]).toString();