A collection of encryption and hashing modules, works with Node.js, require.js or directly in a browser. Modules are usually taken from other open source projects (see file heads), then updated to improve specification support (lots of unit testing) and performance.
Cryptographic hashing is a way to take arbitrary data and return a fixed-size result (hash value) so that any change to the data will have a change in the resulting value. There are many ways to use a hash function, from message authentication, data integrity and data indexing.
- base64
- endian
- hex
- utf8
- passphrases: a utility to identify password guessability
The usage varies by the type of library (hashing, symmetric, asymmetric) and there are utilities for key generation, password security improvement and more.
The simple, straightest forward usage for a hash function is:
var cyphrd = require('cyphrd');
var result = crypto.sha256('abc').hex();
The supported hash modules are:
cyphrd.md5
cyphrd.rmd // RIPEMD-160
cyphrd.sha1
cyphrd.sha256
cyphrd.sha512
Each is used in the same way. Each module has an array of uses. When you run hashing synchronously, you are given a HashResult
object in return.
var cyphrd = require('cyphrd');
var hash = crypto.sha256('abc');
The HashResult
has a ton of useful things available, like:
hash.hex(); // returns the result as a hexadecimal string.
hash.b64(); // returns the result as a base64 string.
hash.endian(); // returns the result as a byte array of endian numbers.
hash.raw(); // return the raw (binary) result.
Each hash module that supports it, also can has a hmac
method:
crypto.sha1.hmac('key', 'data'); // returns a computed HAMC `HashResult` object.
var iterations = 10000;
var keyLength = 20;
cyphrd.pbkdf2(cyphrd.sha1, 'password', 'salt', iterations, keyLength, function (result) {
// result will be the hex string result
});
NOTE: PBKDF2 will be rewritten to conform to other hash functions and result in a HashResult
object.
var result = cyphrd.aes.enc('some data', 'your key');
cyphrd.aes.dec(result, 'your key');
var result = cyphrd.rc4.enc('some data', 'your key');
cyphrd.rc4.dec(result, 'your key');