@ronnakamoto/fnv-1a
v1.1.2
Published
This is a TypeScript implementation of FNV-1a Hash. Fowler–Noll–Vo (or FNV) is a non-cryptographic hash function which is fast and simple in design.
Maintainers
Readme
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