RyanLassigBanks / as-sha256

AssemblyScript implementation of SHA256

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

as-sha256

Assembly Script implementation of SHA256.

This repository contains two npm distributions; a pure AssemblyScript version, and a Typescript wrapper for the WASM build.

Benchmarks

Sha256-Rust#hash x 328,611 ops/sec ±5.99% (75 runs sampled)
Sha256-Js#hash x 340,641 ops/sec ±4.64% (77 runs sampled)
Sha256-Asm#hash x 5,217 ops/sec ±8.83% (74 runs sampled)
Sha256-BCrypto#hash x 411,191 ops/sec ±9.87% (59 runs sampled)
AS-Sha256#hash x 537,124 ops/sec ±8.91% (76 runs sampled)
Fastest is AS-Sha256#hash

AssemblyScript

yarn add @chainsafe/as-sha256

TypeScript Wrapper

yarn add @chainsafe/sha256

Usage

import sha256 from "@chainsafe/sha256";

const hash = sha256(Buffer.from("Hello world"));

We also expose the lower level WASM exports for those that may wish to use it. It can be accessed as follows:

import { wasm } from "@chainsafe/sha256"

const buffer = Buffer.from("Hello world");
const input  = wasm.__retain(wasm.__allocArray(wasm.UINT8ARRAY_ID, buffer));
const output = wasm.hash(input);
const result = wasm.__getUint8Array(output);

// use result before releases. Otherwise use `.slice()` for `result` for prevent modification attached buffer
console.log(toHexString(result));

// To prevent memory leaks
wasm.__release(input);
wasm.__release(output);

License

Apache 2.0

About

AssemblyScript implementation of SHA256

License:Other


Languages

Language:WebAssembly 90.6%Language:TypeScript 4.9%Language:JavaScript 4.5%