1.0.3 • Published 1 year ago

shorthashd v1.0.3

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

Shorthashd

npm version

shorthashd is a mini library for generating short hashes from strings. It is based on Daniel J. Bernstein's popular 'times 33' hash algorithm. A fork of this shortHash function with the possibility to add base, born out of the necessity to update and make this utility zero dependency.

Thanks to @KonkenBonken and @joakimbeng

Installation

You can install shorthashd via npm:

npm install shorthashd

Usage

Importing the Library

To use the library in your TypeScript or JavaScript project, you can import it as follows:

import { shortHash } from 'shorthashd';

Generating a Short Hash

You can generate a short hash by calling the shortHash function with a string and an optional base (default is 16):

const myHash = shortHash("your-string-here");
console.log(myHash); // Outputs the hash in the specified base (default is hexadecimal)

Example

import { shortHash } from 'shorthashd';

const myString = "Hello, World!";
const hashBase16 = shortHash(myString); // Default base 16 (hexadecimal)
const hashBase36 = shortHash(myString, 36); // Base 36

console.log(`Base 16: ${hashBase16}`);
console.log(`Base 36: ${hashBase36}`);

API

shortHash(str: string, base?: number): string

Generates a short hash for the given string.

  • str (string): The string to hash.
  • base (number, optional): The base for the resulting hash string (must be between 2 and 36). Default is 16.

Returns

  • (string): The resulting hash string.

How it Works

Shorthashd uses a hashing function based on Daniel J. Bernstein's popular 'times 33' hash algorithm. The hash is then converted to a string in the specified base.

Hash Function

function hash(text: string): number {
  let hash = 5381,
    index = text.length;

  while (index) {
    hash = (hash * 33) ^ text.charCodeAt(--index);
  }

  return hash >>> 0;
}

Short Hash Function

export function shortHash(str: string, base: number = 16): string {
  if (base < 2 || base > 36) {
    throw new RangeError(
      "short-hash: base must be an integer between 2 and 36"
    );
  }

  return hash(str).toString(base);
}

Contributing

Contributions are welcome! Please open an issue or submit a pull request on GitHub.

License

This project is licensed under the MIT License. See the LICENSE file for details.

1.0.3

1 year ago

1.0.2

1 year ago

1.0.1

1 year ago

1.0.0

1 year ago