Socket
Book a DemoInstallSign in
Socket

jcrypto

Package Overview
Dependencies
Maintainers
1
Versions
8
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

jcrypto

JavaScript white-box cryptography tools.

latest
Source
npmnpm
Version
0.2.2-dev
Version published
Weekly downloads
6
100%
Maintainers
1
Weekly downloads
 
Created
Source

jCrypto

These are an experimental white-box cryptography tools for JavaScript obfuscation.

Algorithms

  • white-box AES128-CTR
  • white-box HMAC-SHA256

Installation

npm install jcrypto

or

git clone https://github.com/tsu-iscd/jcrypto.git
cd jcrypto
npm install

API

Code generation

var key = '0123456789abcdef';
var jcrypto = require('jcrypto');
var options = {  
    encoding: 'hex',
    wrapper: 'UMD',
    mangle: {  
        names: true,
        properties: true
   },
   file: 'path/to/aes.js'
};
// btw you can call it without options argument, default options described below
jcrypto.generateAes(key, options);

options.file = 'path/to/hmac.js';
jcrypto.generateHmac(key, options);

Code generation options:

  • encoding -- key characters encoding; posible values: hex or str (default)
  • wrapper -- code wrapping; posible values: UMD, IIFE or nothing (default)
  • mangle -- mangle names/properties option, properties cache file ./aes-cache.json for aes and ./hmac-cache.json for hmac; possible values: {names: true, properties: true} (default both false)
  • file -- output file option; path to file or return value (default)

Encryption

var aes = require('path/to/aes.js');
var plaintext = 'Hello, world!';
var options = {
    counter: '1826e4111826e4111826e4111826e411', 
    encoding: 'str'
};
var ciphertext = aes.encrypt(plaintext, options);
var output = aes.decrypt(ciphertext, options);
// Hello, world!

Encryption options:

  • counter -- counter for CTR AES mode; string 32 symbols (default 0)
  • encoding -- plain text or encrypt text encoding; posible values are hex or str(default)

Hashing

var hash = require('path/to/hmac.js');
var text = 'Hello, world!';
var options = {
    encoding: 'str'
}
var output = hash(text, options);
// 8dcb6767c395b28b46ea0f0216cb3aa25b6ff46f0181ab035f3cf7fd3914c45e

Hashing options:

  • encoding -- text encoding; posible values are hex or str(default)

Command line interface

The bin/jcrypto utility can be used to generate code of white-box crypto algorithm. It accepts as arguments its secret key, output file and the following options:

  • -a, --algorithm - crypto algorithms: aes, hmac.
  • -h, --help - display help.
  • -k, --key - secret key.
  • -e, --encoding - key characters encoding; posible values: hex.
  • -o, --output - output file.

Example:

$ bin/jcrypto -a aes -k 1234567891234567 -o wbaes.js

Contributors

  • Denis Kolegov
  • Oleg Broslavsky
  • Nikita Oleksov

References

  • [En] [Oleg Broslavsky, Denis Kolegov, Nikita Oleksov. White-Box HMAC.] (http://www.slideshare.net/yalegko/whitebox-hmac-make-your-cipher-secure-to-whitebox-attacks)
  • [Ru] Oleg Broslavsky, Denis Kolegov, Nikita Oleksov. HMAC Obfuscation Method for Implementation in Untrusted Systems.

Keywords

white-box cryptography

FAQs

Package last updated on 09 Nov 2016

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

About

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.

  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc

U.S. Patent No. 12,346,443 & 12,314,394. Other pending.