Package Exports
- hash-anything
- hash-anything/js/main/hash-anything.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (hash-anything) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
hash-anything
Hash (almost) any Javascript primitive or object.
sha1(anything)
var sha1 = require('hash-anything').sha1;
var hash1 = sha1({
a: 1,
b: 2
});
console.log(hash1); //a8fe01c7b160932d628ba94d8400b6615846e791
var hash2 = sha1(1234);
console.log(hash2); //9deba4ae0dab97a17b7e9c299af6e4d52d994f1a
var hash3 = sha1('some text');
console.log(hash3); //4d3dd7cdbb862bbe4b9d1470f74dc26c5262c016
var hash4 = sha1(56.78);
console.log(hash4); //ac8433e96f689a49f3d54a52bb07d6e697dfc2abmd5(anything)
var md5 = require('hash-anything').md5;
var hash = md5({
a: 1,
b: 2
});
console.log(hash); //f8761944960a318b27a1ee4104351f8asha256(anything)
var sha256 = require('hash-anything').sha256;
var hash = sha256({
a: 1,
b: 2
});
console.log(hash); //3c6d145329ac03391eb3db110935dbbc9e006af8c9da674f0c01b2c0e04f1fa6sha512(anything)
var sha512 = require('hash-anything').sha512;
var hash = sha512({
a: 1,
b: 2
});
console.log(hash); //4f54bacd20498e42ca5c0f1c275032eb47b740e1a81db5af835d6310fc6b92ff678d09a9cb15c12e3f8780886c91c8ea242bd28de60618af8dd9b70620746fb6new Hash(algorithm) - Hash multiple things at once.
algorithm (string) = 'sha1', 'md5', 'sha256', or 'sha512'
- hash(anything) - add anything to the hash calculation
- getValue() - get the hash value of everything added to the Hash object
- clear() - clears the contents of the Hash object, so it can be reused.
var Hash = require('hash-anything').Hash;
var hash = new Hash('sha1')
.hash(1234)
.hash('some text')
.hash(new Date(2013, 1, 1))
.hash(567.89)
.hash(/regex/);
console.log(hash.getValue()); //2e3518275983ee7ad81cc9a68fdc634ea9777dfcnew Hash(function) - Use a custom hashing routine.
The routine should take a Buffer and return the hash.
This example uses the xxhash module. It implements xxHash. xxHash is a fast, non-cryptographic hash algorithm. Do not use it for security, but it's great for comparing, caching, indexing, etc.
var Hash = require('hash-anything').Hash;
var XXHash = require('xxhash');
var doHash = function(buf) {
var hasher = new XXHash(0x6d4e9ec6); //random seed
hasher.update(buf);
return hasher.digest();
};
var hash = new Hash(doHash)
.hash(1234)
.hash('some text')
.hash(new Date(2013, 1, 1))
.hash(567.89)
.hash(/regex/);
console.log(hash.getValue()); //3804156080Supported Types
- Primatives: Boolean, Number, String, BigInt, undefined, and Symbol
- Built-In Objects: Date, RegExp, Null, Object, Function, TypedArrays(Uint16Array, etc.), Map, Set, GeneratorFunction, AsyncFunction
- Global Properties: Nan, Infinity
Unsupported Types
- WeakMap
- WeakSet
- Promise
- DataView
Circular References
Currently, hash-anything does not support circular references. They will cause a stack overflow error.
Note on New Types
When a new built-in type is added to Javascript, hash-anything usually needs be updated to support it. Otherwise, the new type will be treated like any other user-defined objects. This may not produce ideal results..