Home

Awesome

JSCryptor

Javascript implementation of RNCryptor

This implementation tries to be compatible with Rob Napier's Objective-C implementation of RNCryptor, It supports schema version 3. This code is based on the PHP implementation of RNCryptor.

Important Recent Changes

Install

npm install jscryptor

Install on Windows

Thanks to @jimmitaker and @black-snow for pointing this

VS2015+ (Community Edition works fine) is required.

Test

npm test

Example

// Example taken from https://github.com/RNCryptor/RNCryptor-php/blob/master/examples/decrypt.php

const password = 'myPassword';
const b64string = "AwHsr+ZD87myaoHm51kZX96u4hhaTuLkEsHwpCRpDywMO1Moz35wdS6OuDgq+SIAK6BOSVKQFSbX/GiFSKhWNy1q94JidKc8hs581JwVJBrEEoxDaMwYE+a+sZeirThbfpup9WZQgp3XuZsGuZPGvy6CvHWt08vsxFAn9tiHW9EFVtdSK7kAGzpnx53OUSt451Jpy6lXl1TKek8m64RT4XPr";

const RNCryptor = require('jscryptor');

console.time('Decrypting example');
const decrypted = RNCryptor.Decrypt(b64string, password);
console.timeEnd('Decrypting example');
console.log("Result:", decrypted.toString());

A very good example, provided by @enricodeleo

const fs = require('fs');
const RNCryptor = require('jscryptor');

const password = 'myPassword';

const img = fs.readFileSync('./Octocat.jpg');
const enc = RNCryptor.Encrypt(img, password);

// Save encrypted image to a file, for sending to anywhere
fs.writeFileSync('./Octocat.enc', enc);

// Now, to decrypt the image:
const b64 = Buffer.from(fs.readFileSync('./Octocat.enc').toString(), 'base64');
const dec = RNCryptor.Decrypt(b64, password);

fs.writeFileSync('./Octocat2.jpg', dec);  // Image should open.

API

RNCryptor()

Object exposed by require('jscryptor');

RNCryptor.Encrypt

RNCryptor.Decrypt

RNCryptor.EncryptWithArbitrarySalts

RNCryptor.EncryptWithArbitraryKeys