Files
skills/docs/security-stack/crypto/crypto-hash
2026-05-29 08:20:56 +01:00
..
2026-05-29 08:20:56 +01:00
2026-05-29 08:20:56 +01:00
2026-05-29 08:20:56 +01:00

@suaveplan/crypto-hash - Pure-TypeScript hashing substrate — SHA-2 digests, HMAC, HKDF, PBKDF2, Argon2id, hex/Base64 encoding. Zero WASM, zero browser deps.

Summary

Pure-TypeScript hashing substrate. SHA-2 digests, HMAC, HKDF, PBKDF2, Argon2id, and hex/Base64 encoding — no WASM, no browser globals, fully tree-shakeable.

Documentation tree

- [base64](./src/encoding/base64/base64.md) — _(no submodules)_- [hex](./src/encoding/hex/hex.md) — _(no submodules)_- [hex](./src/encoding/hex/hex.md) — _(no submodules)_- [codes](./src/errors/codes/codes.md) — _(no submodules)_- [codes](./src/errors/codes/codes.md) — _(no submodules)_- [hash-error](./src/errors/hash-error/hash-error.md) — _(no submodules)_- [hash-error](./src/errors/hash-error/hash-error.md) — _(no submodules)_- [sha2](./src/hash/sha2/sha2.md) — _(no submodules)_- [sha2](./src/hash/sha2/sha2.md) — _(no submodules)_- [argon2id](./src/kdf/argon2id/argon2id.md) — _(no submodules)_- [argon2id](./src/kdf/argon2id/argon2id.md) — _(no submodules)_- [hkdf](./src/kdf/hkdf/hkdf.md) — _(no submodules)_- [hkdf](./src/kdf/hkdf/hkdf.md) — _(no submodules)_- [pbkdf2](./src/kdf/pbkdf2/pbkdf2.md) — _(no submodules)_- [pbkdf2](./src/kdf/pbkdf2/pbkdf2.md) — _(no submodules)_- [argon2id-password](./src/mac/argon2id-password/argon2id-password.md) — _(no submodules)_- [argon2id-password](./src/mac/argon2id-password/argon2id-password.md) — _(no submodules)_- [blake2b-password](./src/mac/blake2b-password/blake2b-password.md) — _(no submodules)_- [blake2b-password](./src/mac/blake2b-password/blake2b-password.md) — _(no submodules)_- [hmac](./src/mac/hmac/hmac.md) — _(no submodules)_- [hmac](./src/mac/hmac/hmac.md) — _(no submodules)_- [argon2id.select](./src/primitives/argon2id/argon2id.select/argon2id.select.md) — _(no submodules)_- [argon2id.select](./src/primitives/argon2id/argon2id.select/argon2id.select.md) — _(no submodules)_- [argon2id.native](./src/primitives/argon2id/impl/argon2id.native/argon2id.native.md) — _(no submodules)_- [argon2id.native](./src/primitives/argon2id/impl/argon2id.native/argon2id.native.md) — _(no submodules)_- [argon2id.noble](./src/primitives/argon2id/impl/argon2id.noble/argon2id.noble.md) — _(no submodules)_- [argon2id.noble](./src/primitives/argon2id/impl/argon2id.noble/argon2id.noble.md) — _(no submodules)_- [blake2b](./src/primitives/blake2b/blake2b.md) — _(no submodules)_- [blake2b.noble](./src/primitives/blake2b/impl/blake2b.noble/blake2b.noble.md) — _(no submodules)_- [blake2b.noble](./src/primitives/blake2b/impl/blake2b.noble/blake2b.noble.md) — _(no submodules)_- [blake2b](./src/primitives/blake2b/blake2b.md) — _(no submodules)_- [hkdf.select](./src/primitives/hkdf/hkdf.select/hkdf.select.md) — _(no submodules)_- [hkdf.select](./src/primitives/hkdf/hkdf.select/hkdf.select.md) — _(no submodules)_- [hkdf.native](./src/primitives/hkdf/impl/hkdf.native/hkdf.native.md) — _(no submodules)_- [hkdf.native](./src/primitives/hkdf/impl/hkdf.native/hkdf.native.md) — _(no submodules)_- [hkdf.noble](./src/primitives/hkdf/impl/hkdf.noble/hkdf.noble.md) — _(no submodules)_- [hkdf.noble](./src/primitives/hkdf/impl/hkdf.noble/hkdf.noble.md) — _(no submodules)_- [hmac.select](./src/primitives/hmac/hmac.select/hmac.select.md) — _(no submodules)_- [hmac.select](./src/primitives/hmac/hmac.select/hmac.select.md) — _(no submodules)_- [hmac.native](./src/primitives/hmac/impl/hmac.native/hmac.native.md) — _(no submodules)_- [hmac.native](./src/primitives/hmac/impl/hmac.native/hmac.native.md) — _(no submodules)_- [hmac.noble](./src/primitives/hmac/impl/hmac.noble/hmac.noble.md) — _(no submodules)_- [hmac.noble](./src/primitives/hmac/impl/hmac.noble/hmac.noble.md) — _(no submodules)_- [pbkdf2.native](./src/primitives/pbkdf2/impl/pbkdf2.native/pbkdf2.native.md) — _(no submodules)_- [pbkdf2.native](./src/primitives/pbkdf2/impl/pbkdf2.native/pbkdf2.native.md) — _(no submodules)_- [pbkdf2.noble](./src/primitives/pbkdf2/impl/pbkdf2.noble/pbkdf2.noble.md) — _(no submodules)_- [pbkdf2.noble](./src/primitives/pbkdf2/impl/pbkdf2.noble/pbkdf2.noble.md) — _(no submodules)_- [pbkdf2.select](./src/primitives/pbkdf2/pbkdf2.select/pbkdf2.select.md) — _(no submodules)_- [pbkdf2.select](./src/primitives/pbkdf2/pbkdf2.select/pbkdf2.select.md) — _(no submodules)_- [scrypt](./src/primitives/scrypt/scrypt.md) — _(no submodules)_- [scrypt.noble](./src/primitives/scrypt/impl/scrypt.noble/scrypt.noble.md) — _(no submodules)_- [scrypt.noble](./src/primitives/scrypt/impl/scrypt.noble/scrypt.noble.md) — _(no submodules)_- [scrypt](./src/primitives/scrypt/scrypt.md) — _(no submodules)_- [sha256.native](./src/primitives/sha256/impl/sha256.native/sha256.native.md) — _(no submodules)_- [sha256.native](./src/primitives/sha256/impl/sha256.native/sha256.native.md) — _(no submodules)_- [sha256.noble](./src/primitives/sha256/impl/sha256.noble/sha256.noble.md) — _(no submodules)_- [sha256.noble](./src/primitives/sha256/impl/sha256.noble/sha256.noble.md) — _(no submodules)_- [sha256.select](./src/primitives/sha256/sha256.select/sha256.select.md) — _(no submodules)_- [sha256.select](./src/primitives/sha256/sha256.select/sha256.select.md) — _(no submodules)_- [sha384.native](./src/primitives/sha384/impl/sha384.native/sha384.native.md) — _(no submodules)_- [sha384.native](./src/primitives/sha384/impl/sha384.native/sha384.native.md) — _(no submodules)_- [sha384.noble](./src/primitives/sha384/impl/sha384.noble/sha384.noble.md) — _(no submodules)_- [sha384.noble](./src/primitives/sha384/impl/sha384.noble/sha384.noble.md) — _(no submodules)_- [sha384.select](./src/primitives/sha384/sha384.select/sha384.select.md) — _(no submodules)_- [sha384.select](./src/primitives/sha384/sha384.select/sha384.select.md) — _(no submodules)_- [sha512.native](./src/primitives/sha512/impl/sha512.native/sha512.native.md) — _(no submodules)_- [sha512.native](./src/primitives/sha512/impl/sha512.native/sha512.native.md) — _(no submodules)_- [sha512.noble](./src/primitives/sha512/impl/sha512.noble/sha512.noble.md) — _(no submodules)_- [sha512.noble](./src/primitives/sha512/impl/sha512.noble/sha512.noble.md) — _(no submodules)_- [sha512.select](./src/primitives/sha512/sha512.select/sha512.select.md) — _(no submodules)_- [sha512.select](./src/primitives/sha512/sha512.select/sha512.select.md) — _(no submodules)_- [base64](./src/encoding/base64/base64.md) — _(no submodules)_- [hex](./src/encoding/hex/hex.md) — _(no submodules)_- [hex](./src/encoding/hex/hex.md) — _(no submodules)_- [codes](./src/errors/codes/codes.md) — _(no submodules)_- [codes](./src/errors/codes/codes.md) — _(no submodules)_- [hash-error](./src/errors/hash-error/hash-error.md) — _(no submodules)_- [hash-error](./src/errors/hash-error/hash-error.md) — _(no submodules)_- [sha2](./src/hash/sha2/sha2.md) — _(no submodules)_- [sha2](./src/hash/sha2/sha2.md) — _(no submodules)_- [argon2id](./src/kdf/argon2id/argon2id.md) — _(no submodules)_- [argon2id](./src/kdf/argon2id/argon2id.md) — _(no submodules)_- [hkdf](./src/kdf/hkdf/hkdf.md) — _(no submodules)_- [hkdf](./src/kdf/hkdf/hkdf.md) — _(no submodules)_- [pbkdf2](./src/kdf/pbkdf2/pbkdf2.md) — _(no submodules)_- [pbkdf2](./src/kdf/pbkdf2/pbkdf2.md) — _(no submodules)_- [argon2id-password](./src/mac/argon2id-password/argon2id-password.md) — _(no submodules)_- [argon2id-password](./src/mac/argon2id-password/argon2id-password.md) — _(no submodules)_- [blake2b-password](./src/mac/blake2b-password/blake2b-password.md) — _(no submodules)_- [blake2b-password](./src/mac/blake2b-password/blake2b-password.md) — _(no submodules)_- [hmac](./src/mac/hmac/hmac.md) — _(no submodules)_- [hmac](./src/mac/hmac/hmac.md) — _(no submodules)_- [argon2id.select](./src/primitives/argon2id/argon2id.select/argon2id.select.md) — _(no submodules)_- [argon2id.select](./src/primitives/argon2id/argon2id.select/argon2id.select.md) — _(no submodules)_- [argon2id.native](./src/primitives/argon2id/impl/argon2id.native/argon2id.native.md) — _(no submodules)_- [argon2id.native](./src/primitives/argon2id/impl/argon2id.native/argon2id.native.md) — _(no submodules)_- [argon2id.noble](./src/primitives/argon2id/impl/argon2id.noble/argon2id.noble.md) — _(no submodules)_- [argon2id.noble](./src/primitives/argon2id/impl/argon2id.noble/argon2id.noble.md) — _(no submodules)_- [blake2b](./src/primitives/blake2b/blake2b.md) — _(no submodules)_- blake2b.noble — (no submodules)- blake2b.noble — (no submodules)- blake2b — (no submodules)- blake2b.noble — <!-- begin:a…
  • hkdf.select — (no submodules)- hkdf.select — (no submodules)- hkdf.native — (no submodules)- hkdf.native — (no submodules)- hkdf.noble — (no submodules)- hkdf.noble — (no submodules)- hmac.select — (no submodules)- hmac.select — (no submodules)- hmac.native — (no submodules)- hmac.native — (no submodules)- hmac.noble — (no submodules)- hmac.noble — (no submodules)- pbkdf2.native — (no submodules)- pbkdf2.native — (no submodules)- pbkdf2.noble — (no submodules)- pbkdf2.noble — (no submodules)- pbkdf2.select — (no submodules)- pbkdf2.select — (no submodules)- scrypt — (no submodules)- scrypt.noble — <!-- begin:au…
  • sha256.native — (no submodules)- sha256.native — (no submodules)- sha256.noble — (no submodules)- sha256.noble — (no submodules)- sha256.select — (no submodules)- sha256.select — (no submodules)- sha384.native — (no submodules)- sha384.native — (no submodules)- sha384.noble — (no submodules)- sha384.noble — (no submodules)- sha384.select — (no submodules)- sha384.select — (no submodules)- sha512.native — (no submodules)- sha512.native — (no submodules)- sha512.noble — (no submodules)- sha512.noble — (no submodules)- sha512.select — (no submodules)- sha512.select — (no submodules)- base64 — (no submodules)- hex — (no submodules)- hex — (no submodules)- codes — (no submodules)- codes — (no submodules)- hash-error — (no submodules)- hash-error — (no submodules)- sha2 — (no submodules)- sha2 — (no submodules)- argon2id — (no submodules)- argon2id — (no submodules)- hkdf — (no submodules)- hkdf — (no submodules)- pbkdf2 — (no submodules)- pbkdf2 — (no submodules)- argon2id-password — (no submodules)- argon2id-password — (no submodules)- blake2b-password — (no submodules)- blake2b-password — (no submodules)- hmac — (no submodules)- hmac — (no submodules)- argon2id.select — (no submodules)- argon2id.select — (no submodules)- argon2id.native — (no submodules)- argon2id.native — (no submodules)- argon2id.noble — (no submodules)- argon2id.noble — (no submodules)- blake2b — (no submodules)- blake2b.noble — _(no submo…
  • hkdf.select — (no submodules)- hkdf.select — (no submodules)- hkdf.native — (no submodules)- hkdf.native — (no submodules)- hkdf.noble — (no submodules)- hkdf.noble — (no submodules)- hmac.select — (no submodules)- hmac.select — (no submodules)- hmac.native — (no submodules)- hmac.native — (no submodules)- hmac.noble — (no submodules)- hmac.noble — (no submodules)- pbkdf2.native — (no submodules)- pbkdf2.native — (no submodules)- pbkdf2.noble — (no submodules)- pbkdf2.noble — (no submodules)- pbkdf2.select — (no submodules)- pbkdf2.select — (no submodules)- scrypt — (no submodules)- scrypt.noble — _(no submod…
  • sha256.native — (no submodules)- sha256.native — (no submodules)- sha256.noble — (no submodules)- sha256.noble — (no submodules)- sha256.select — (no submodules)- sha256.select — (no submodules)- sha384.native — (no submodules)- sha384.native — (no submodules)- sha384.noble — (no submodules)- sha384.noble — (no submodules)- sha384.select — (no submodules)- sha384.select — (no submodules)- sha512.native — (no submodules)- sha512.native — (no submodules)- sha512.noble — (no submodules)- sha512.noble — (no submodules)- sha512.select — (no submodules)- sha512.select — (no submodules)- base64 — (no submodules)- hex — (no submodules) - hex — (no submodules)- codes — (no submodules) - codes — (no submodules)- hash-error — (no submodules) - hash-error — (no submodules)- sha2 — (no submodules) - sha2 — (no submodules)- argon2id — (no submodules) - argon2id — (no submodules)- hkdf — (no submodules) - hkdf — (no submodules)- pbkdf2 — (no submodules) - pbkdf2 — (no submodules)- argon2id-password — (no submodules) - argon2id-password — (no submodules)- blake2b-password — (no submodules) - blake2b-password — (no submodules)- hmac — (no submodules) - hmac — (no submodules)- argon2id.select — (no submodules) - argon2id.select — (no submodules)- argon2id.native — (no submodules) - argon2id.native — (no submodules)- argon2id.noble — (no submodules) - argon2id.noble — (no submodules)- blake2b — (no submodules) - blake2b.noble — (no submodules) - blake2b.noble — (no submodules) - blake2b — (no submodules)- hkdf.select — (no submodules) - hkdf.select — (no submodules)- hkdf.native — (no submodules) - hkdf.native — (no submodules)- hkdf.noble — (no submodules) - hkdf.noble — (no submodules)- hmac.select — (no submodules) - hmac.select — (no submodules)- hmac.native — (no submodules) - hmac.native — (no submodules)- hmac.noble — (no submodules) - hmac.noble — (no submodules)- pbkdf2.native — (no submodules) - pbkdf2.native — (no submodules)- pbkdf2.noble — (no submodules) - pbkdf2.noble — (no submodules)- pbkdf2.select — (no submodules) - pbkdf2.select — (no submodules)- scrypt — (no submodules) - scrypt.noble — (no submodules) - scrypt.noble — (no submodules) - scrypt — (no submodules)- sha256.native — (no submodules) - sha256.native — (no submodules)- sha256.noble — (no submodules) - sha256.noble — (no submodules)- sha256.select — (no submodules) - sha256.select — (no submodules)- sha384.native — (no submodules) - sha384.native — (no submodules)- sha384.noble — (no submodules) - sha384.noble — (no submodules)- sha384.select — (no submodules) - sha384.select — (no submodules)- sha512.native — (no submodules) - sha512.native — (no submodules)- sha512.noble — (no submodules) - sha512.noble — (no submodules)- sha512.select — (no submodules) - sha512.select — (no submodules)
  • Packages

    Module File Exports
    SHA-2 digests src/hash/sha2.md sha256, sha384, sha512, hash, HashAlgorithm
    HMAC src/mac/hmac.md hmac
    HKDF src/kdf/hkdf.md hkdf, HkdfOptions
    PBKDF2 src/kdf/pbkdf2.md pbkdf2, PBKDF2_MIN_ITERATIONS, Pbkdf2Options
    Argon2id src/kdf/argon2id.md argon2id, ARGON2ID_MIN_*, Argon2idOptions
    Hex encoding src/encoding/hex.md toHex, fromHex
    Base64 encoding src/encoding/base64.md toBase64, fromBase64, toBase64Url, fromBase64Url
    Errors — HashError, HASH_CODES, HashCode

    Quick start

    import { sha256, toHex } from "@suaveplan/crypto-hash";
    
    const digest = sha256(new TextEncoder().encode("hello world"));
    console.log(toHex(digest));
    

    Subpath imports

    import { sha256 }    from "@suaveplan/crypto-hash/hash";
    import { hmac }      from "@suaveplan/crypto-hash/mac";
    import { hkdf, pbkdf2, argon2id } from "@suaveplan/crypto-hash/kdf";
    import { toHex, fromBase64Url }   from "@suaveplan/crypto-hash/encoding";
    import { HashError, HASH_CODES }  from "@suaveplan/crypto-hash/errors";
    

    License

    MIT