You are on the right track and will still need to use:
Crypto.createCipheriv()
A function that can generate a randomized initialization vector for you will be:
Crypto.randomBytes(16)
A value of 16 means the number of bytes needed to complete the required vector length.
To give an example:
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()]);
For completeness, here is an example of decrypting the above 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();
source share