Skip to content

kraynel/js-rijndael

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

JS-Rijndael

CircleCI Coverage Status Known Vulnerabilities

JS-Rijndael is a port of F. Doering and B. Poettering implementation of Rijndael algorithm. It has no external dependencies and is fully compatible with mcrypt.

How to use

Add the dependency to your project: npm install --save js-rijndael. Require it in your file.

var mcrypt = require('js-rijndael');

mcrypt.listAlgorithms() lists the available ciphers:

  • rijndael-128
  • rijndael-196
  • rijndael-256

mcrypt.listModes() lists the available modes:

  • ecb
  • cbc
  • cfb
  • ncfb
  • nofb
  • ctr

Two methods are exposed: encrypt and decrypt. They take byte arrays as inputs (regular arrays).

Encrypt

encryptedByteArray = mcrypt.encrypt(clearMessage, iv, key, cipherName, mode);

Decrypt

clearByteArray = mcrypt.decrypt(encryptedMessage, iv, key, cipherName, mode);

Example

var base64 = require('base64-js');

var key = [].slice.call(base64.toByteArray("IkhCeiVpeE44RUliVmJDL1FnVltWNVomJn44RSZ4UWU="));
var iv = [].slice.call(base64.toByteArray("5DeaRfj4iHhBluFfyGDbPA=="));
var message = [].slice.call(base64.toByteArray("8N6UX4G5c\/DCtELUOEE5jAdlkLvjBpFQGvo\/7fv3lrOfBUY\/Ze545d5k1C\/lA4zQ88rt52TB3Gz4egWJzerxZy41+sVSOrtLHrQR+Tv7NGfi+vSlZdmAsYVtHOHEPvImmkr+8k9hkKLlZELdY\/mq2t5INTqtmPwxufJB\/3LC+HPnnC0BGYxjvKIJ3jEBfzwcmOiyZG7iea\/BLIZwoH9lUzRe8cR+eVjlTig9NW\/tNMdkYBrxCXoK8XlNAXzjkgtq6c2Sd8keckHvEkYdSkie+ZaZvSwngCQgOKsiTs3jUJkedVnHM9VXLeUCocV17IldQxxghCK14hvLZ4WRCbtDHxMreCR3Rpwv11rWURpvmz0="));
var clearText = String.fromCharCode.apply(this, mcrypt.decrypt(message, iv, key, cipher.cipher, cipher.mode));

console.log(clearText);

Tests

Generate test data

Two solutions:

  • With php and mcrypt, run php generateTests.php > ../test-data.js
  • With docker, run ./generateTests.sh

Run tests

With the test data generated, run npm test.

About

Pure JS implementation of Rijndael cipher.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors