/ohash

Super fast hashing library based on murmurhash3 written in Vanilla JS

Primary LanguageTypeScriptMIT LicenseMIT

ohash

npm version npm downloads Github Actions Codecov bundle size

Super fast hashing library written in Vanilla JS

Usage

Install package:

# npm
npm install ohash

# yarn
yarn add ohash

# pnpm
pnpm install ohash

Import:

// ESM
import { hash, objectHash, murmurHash, sha256 } from 'ohash'

// CommonJS
const { hash, objectHash, murmurHash, sha256 } = require('ohash')

hash(object, options?)

Converts object value into a string hash using objectHash and then applies sha256 with Base64 encoding (trimmed by length of 10).

Usage:

import { hash } from 'ohash'

// "dZbtA7f0lK"
console.log(hash({ foo: 'bar' }))

objectHash(object, options?)

Converts a nest object value into a stable and safe string for hashing.

Usage:

import { objectHash } from 'ohash'

// "object:1:string:3:foo:string:3:bar,"
console.log(objectHash({ foo: 'bar'}))

murmurHash(str)

Converts input string (of any length) into a 32-bit positive integer using MurmurHash3.

Usage:

import { murmurHash } from 'ohash'

// "2708020327"
console.log(murmurHash('Hello World'))

sha256

Create a secure SHA 256 digest from input string.

import { sha256 } from 'ohash'

// "a591a6d40bf420404a011733cfb7b190d62c65bf0bcda32b57b277d9ad9f146e"
console.log(sha256('Hello World'))

sha256base64

Create a secure SHA 256 digest in Base64 encoding from input string.

import { sha256base64 } from 'ohash'

// "pZGm1Av0IEBKARczz7exkNYsZb8LzaMrV7J32a2fFG4"
console.log(sha256base64('Hello World'))

💻 Development

  • Clone this repository
  • Enable Corepack using corepack enable (use npm i -g corepack for Node.js < 16.10)
  • Install dependencies using pnpm install
  • Run interactive tests using pnpm dev

License

Made with 💛

Published under MIT License.

Based on puleos/object-hash by Scott Puleo, and implementations from perezd/node-murmurhash and garycourt/murmurhash-js by Gary Court and Austin Appleby and brix/crypto-js.