1.0.3 • Published 12 months ago

shorthashd v1.0.3

Weekly downloads
-
License
MIT
Repository
github
Last release
12 months 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

12 months ago

1.0.2

12 months ago

1.0.1

12 months ago

1.0.0

12 months ago