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.
npm install @ronnakamoto/fnv-1aThis 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.
Install FNV-1a Hash with npm
``bash`
npm install @ronnakamoto/fnv-1a
Usage/Examples
`javascript
// 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("ロン 中本");
`
`typescript`
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)
Clone the project
`bash`
git clone https://github.com/ronnakamoto/fnv-1a.git
Go to the project directory
`bash`
cd fnv-1a
Install dependencies
`bash`
npm install
Build the package
`bash`
npm run build
To run tests, run the following command
`bash``
npm t