Introducing Socket Firewall: Free, Proactive Protection for Your Software Supply Chain.Learn More
Socket
Book a DemoInstallSign in
Socket

@bonniernews/rolling-hash

Package Overview
Dependencies
Maintainers
27
Versions
3
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@bonniernews/rolling-hash

When hashing an ID you might not want it to stay the same **forever** so this library solves that by making it rolling.

latest
npmnpm
Version
1.0.2
Version published
Maintainers
27
Created
Source

Rolling hash

When hashing an ID you might not want it to stay the same forever so this library solves that by making it rolling.

The rolling occurs at a fixed date interval and in turn gives you a new fresh ID to use!

This rolling hash library is supposed to be able to work with all kinds of encryption libraries and still give a valid rolling ID.

Usage

Installing

npm install @bonniernews/rolling-hash

running

The code is simple to use with any crypto Library.

Simply input the given hashFunction, toBase64Function and toHexFunction and retrieve a rolledHash.

example with an async crypto library:

import rollingHash from "@bonniernews/rolling-hash";
import crypto from "node:crypto";

async function hashFunction(str) {
  const arrayBuffer = await crypto.subtle.digest("SHA-256", new TextEncoder().encode(str));

  return Array.from(new Uint8Array(arrayBuffer));
}

function toBase64Function(hash) {
  return Buffer.from(hash).toString("base64");
}

function toHexFunction(hash) {
  return hash.map((b) => b.toString(16).padStart(2, "0")).join("");
}

const rolledHash = await rollingHash("foobar", { hashFunction, toBase64Function, toHexFunction });

// use rolledHash as you want

example with a sync crypto library:

import rollingHash from "@bonniernews/rolling-hash";
import cryptoJs from "crypto-js";

function hashFunction(str) {
  return cryptoJs.SHA256(str);
}

function toBase64Function(hash) {
  return hash.toString(cryptoJs.enc.Base64);
}

function toHexFunction(hash) {
  return hash.toString(cryptoJs.enc.Hex);
}

const rolledHash = rollingHash("foobar", { hashFunction, toBase64Function, toHexFunction });

// use rolledHash as you want

if using commonJS:

const { default: rollingHash } = require("@bonniernews/rolling-hash");

Disclaimer

The interval at which the rolling of the hash is performed may change.

We use the Date class to handle the hash, if this is modified in anyway we cannot guarantee that this will work a 100% of the time.

Keywords

Crypto

FAQs

Package last updated on 10 Oct 2023

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts