Rijndael in Pure Javascript
npm install rijndael-jsThis is an implementation of Rijndael algorithm.
Supports 128/192/256 bit key/block, and ECB, CBC modes.
Unlike node-rijndael, or node-mcrypt, this is an pure-JS implementation.
Unlike js-rijndael, this is licensed under MIT License.
``js
const Rijndael = require('rijndael-js');
// If you are using this module in Node.js environment (or Buffer exists in global context),Buffer.from
// every data (key, iv, plaintext, ciphertext) will be converted to byte array using
// For what can be converted, please refer to Node.js documentation:
// https://nodejs.org/api/buffer.html#buffer_class_buffer
// If you are using this module in web browser environment,
// data should be one of:
// -
// -
// - array-like object, which:
// - can be accepted by Array.from() method
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/from
// - every element is an integer
// Key can be 16/24/32 bytes long (128/192/256 bit)
const key = 'Lorem ipsum dolor sit amet, cons';
// Plaintext will be zero-padded
const original = 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do';
// IV is necessary for CBC mode
// IV should have same length with the block size
const iv = 'Ut enim ad minim veniam, quis no';
// Create Rijndael instance
// new Rijndael(key, mode)
const cipher = new Rijndael(key, 'cbc');
// Rijndael.encrypt(plaintext, blockSize[, iv]) ->
// Output will always be
const ciphertext = Buffer.from(cipher.encrypt(original, 256, iv));
ciphertext.toString("base64");
// -> bmwLDaLiI1k0oUu5wx9dlWs+Uuw3IhIkMYvq0VsVlQY66wAAqS0djh8N+SZJNHsv8wBRfhytRX2p9LJ0GT3sig==
// Rijndael.decrypt(ciphertext, blockSize[, iv]) ->
const plaintext = Buffer.from(cipher.decrypt(ciphertext, 256, iv));
original === plaintext.toString();
// -> true
`
- Type of return data has changed to Array, from Buffer`
- Internal code convention change
- Improve compatibility with non-node environment
Initial release