1.1.2 β€’ Published 1 year ago

@ronnakamoto/fnv-1a v1.1.2

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

FNV-1a Hash

MIT License

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-1a

Usage/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
ParameterTypeDescription
inputInputRequired. Input data(string, object)
optionsOptionsRequired. 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.git

Go to the project directory

  cd fnv-1a

Install dependencies

  npm install

Build the package

  npm run build

Running Tests

To run tests, run the following command

  npm t

Acknowledgements

1.1.2

1 year ago

1.1.1

1 year ago

1.1.0

1 year ago

1.0.1

1 year ago

1.0.0

1 year ago