import * as mod from "https://deno.land/std@0.212.0/crypto/crypto.ts";
Extensions to the [Web Crypto API]https://developer.mozilla.org/en-US/docs/Web/API/Web_Crypto_API supporting additional encryption APIs, but also delegating to the built-in APIs when possible.
Provides additional digest algorithms that are not part of the WebCrypto
standard as well as a subtle.digest
and subtle.digestSync
methods.
The KeyStack
export implements the KeyRing
interface
for managing rotatable keys for signing data to prevent tampering, like with
HTTP cookies.
Supported algorithms
Here is a list of supported algorithms. If the algorithm name in WebCrypto and Wasm/Rust is the same, this library prefers to use algorithms that are supported by WebCrypto.
WebCrypto:
SHA-384
SHA-256
SHA-512
(length-extendable and collidable)
Wasm/Rust:
BLAKE2B-128
BLAKE2B-160
BLAKE2B-224
BLAKE2B-256
BLAKE2B-384
BLAKE2B
BLAKE2S
BLAKE3
FNV32
(length-extendable)FNV32A
(length-extendable)FNV64
(length-extendable)FNV64A
(length-extendable)KECCAK-224
KECCAK-256
KECCAK-384
KECCAK-512
SHA-384
SHA3-224
SHA3-256
SHA3-384
SHA3-512
SHAKE128
SHAKE256
TIGER
RIPEMD-160
(length-extendable)SHA-224
(length-extendable)SHA-256
(length-extendable)SHA-512
(length-extendable)MD4
(collidable and length-extendable)MD5
(collidable and length-extendable)SHA-1
(collidable and length-extendable)
Examples
Example 1
Example 1
import { crypto } from "https://deno.land/std@0.212.0/crypto/mod.ts";
// This will delegate to the runtime's WebCrypto implementation.
console.log(
new Uint8Array(
await crypto.subtle.digest(
"SHA-384",
new TextEncoder().encode("hello world"),
),
),
);
// This will use a bundled Wasm/Rust implementation.
console.log(
new Uint8Array(
await crypto.subtle.digest(
"BLAKE3",
new TextEncoder().encode("hello world"),
),
),
);
Convert hash to a string
Convert hash to a string
import {
crypto,
} from "https://deno.land/std@0.212.0/crypto/mod.ts";
import { encodeHex } from "https://deno.land/std@0.212.0/encoding/hex.ts"
import { encodeBase64 } from "https://deno.land/std@0.212.0/encoding/base64.ts"
const hash = await crypto.subtle.digest(
"SHA-384",
new TextEncoder().encode("You hear that Mr. Anderson?"),
);
// Hex encoding
console.log(encodeHex(hash));
// Or with base64 encoding
console.log(encodeBase64(hash));
Variables
An wrapper for WebCrypto adding support for additional non-standard algorithms, but delegating to the runtime WebCrypto implementation whenever possible. | |
All cryptographic hash/digest algorithms supported by std/crypto/_wasm. |
Interfaces
Extensions to the Web | |
Extensions to the web standard |
Type Aliases
Extended digest algorithms accepted by | |
Extended digest algorithm names. | |
Extended digest algorithm objects. | |
FNV (Fowler/Noll/Vo) algorithms names. | |
An algorithm name supported by std/crypto/_wasm. |