@ronnakamoto/fnv-1a v1.1.2
FNV-1a Hash
This is an extremly reliable TypeScript implementation of FNV-1a Hash that supports 32, 64, 128, 256, 512 and 1024 bit hashing. FowlerβNollβVo (or FNV) is a non-cryptographic hash function which is fast and simple in design.
FNV hashes are designed to be fast while maintaining a low collision rate. The FNV speed allows one to quickly hash lots of data while maintaining a reasonable collision rate. The high dispersion of the FNV hashes makes them well suited for hashing nearly identical strings such as URLs, hostnames, filenames, text, IP addresses, etc.
Installation
Install FNV-1a Hash with npm
npm install @ronnakamoto/fnv-1aUsage/Examples
// ESM import
import fnv1a from '@ronnakamoto/fnv-1a'
// or CommonJS import
const fnv1a = require('@ronnakamoto/fnv-1a').default;
//takes defaults { size: 32, outType: 'bigint' }
const hash = fnv1a("input");
// takes { size: 512, outType: 'bigint' }
const hash = fnv1a("input", { size: 512 });
// takes { size: 32, outType: 'bin' }
const hash = fnv1a("input", { outType: 'bin' });
// use those smiley faces. unicode support
const hash = fnv1a("πππ");
// and of course fancy text as well
const hash = fnv1a("βπ¬π« πππ¨ππͺπ¬π±π¬");
// and supports any language
const hash = fnv1a("γγ³ δΈζ¬"); Documentation
fnv1a(input: Input, options: Options): Output| Parameter | Type | Description |
|---|---|---|
input | Input | Required. Input data(string, object) |
options | Options | Required. Options({ size: 32\|64\|128\|256\|512\|1024, outType: 'bigint'\|'hex'\|'bin'}) |
Takes the input data and returns BigInt or string(hex, binary)
Build and Run Locally
Clone the project
git clone https://github.com/ronnakamoto/fnv-1a.gitGo to the project directory
cd fnv-1aInstall dependencies
npm installBuild the package
npm run buildRunning Tests
To run tests, run the following command
npm t