CX · Reference guidehash
PlaygroundDownloadsAboutv0.18.0-pre.1

hash

Content-addressable hashing — fixed-length digests of arbitrary byte payloads. Four algorithms: SHA-256 (the content-addressing default), SHA-384, SHA-512, and BLAKE3 (with arbitrary-length XOF output). Covers integrity and content addressing, not password hashing or keyed operations — those belong to cx-stdlib/crypto. Digests convert to lowercase hex, URL-safe base64, or base32, and carry SRI helpers for module-lockfile integrity.

hash:sha256

[$hash:sha256] -> bytes — Compute the SHA-256 digest (32 bytes) of the input — the CX content-addressing default.

      [?lib 'cx-stdlib/hash']
[$hash:format-hex [$hash:sha256 "abc"]]
    
      ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad
    

hash:sha384

[$hash:sha384] -> bytes — Compute the SHA-384 digest (48 bytes) of the input.

      [?lib 'cx-stdlib/hash']
[$hash:sri-format [$hash:sha384 "hi"] "sha384"]
    
      sha384-B5EAbfgShHckT1PQ/c4hDbgfVXV1EOJqzuNcGKa86qKNzbv9bcBBubTcextU439S
    

hash:sha512

[$hash:sha512] -> bytes — Compute the SHA-512 digest (64 bytes) of the input.

      [?lib 'cx-stdlib/hash']
[$hash:format-hex [$hash:sha512 "abc"]]
    
      ddaf35a193617abacc417349ae20413112e6fa4e89a97ea20a9eeee64b55d39a2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f
    

hash:blake3

[$hash:blake3] -> bytes — Compute the BLAKE3 digest (32-byte default) of the input.

      [?lib 'cx-stdlib/hash']
[$hash:equals [$hash:blake3-string "abc"] [$hash:blake3 "abc"]]
    
      true
    

hash:blake3-xof

[$hash:blake3-xof] -> bytes — Compute a BLAKE3 digest of arbitrary length (XOF mode), producing out-length bytes.

      [?lib 'cx-stdlib/hash']
[$hash:format-hex [$hash:blake3-xof "abc" 1]]
    
      '64'
    

hash:sha256-hex

[$hash:sha256-hex] -> string — Compute the SHA-256 digest and return it directly as a lowercase hex string.

      [?lib 'cx-stdlib/hash']
[$hash:sha256-hex ""]
    
      e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
    

hash:sha384-hex

[$hash:sha384-hex] -> string — Compute the SHA-384 digest and return it directly as a lowercase hex string.

      [?lib 'cx-stdlib/hash']
[$hash:sha384-hex ""]
    
      '38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95b'
    

hash:sha512-hex

[$hash:sha512-hex] -> string — Compute the SHA-512 digest and return it directly as a lowercase hex string.

      [?lib 'cx-stdlib/hash']
[$hash:sha512-hex ""]
    
      cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e
    

hash:blake3-hex

[$hash:blake3-hex] -> string — Compute the BLAKE3 digest and return it directly as a lowercase hex string.

      [?lib 'cx-stdlib/hash']
[$hash:blake3-hex ""]
    
      af1349b9f5f9a1a6a0404dea36dcc9499bcb25c9adc112b7cc9a93cae41f3262
    

hash:sha256-string

[$hash:sha256-string] -> bytes — Compute the SHA-256 digest of UTF-8 string input.

      [?lib 'cx-stdlib/hash']
[$hash:equals [$hash:sha256-string "abc"] [$hash:sha256 "abc"]]
    
      true
    

hash:blake3-string

[$hash:blake3-string] -> bytes — Compute the BLAKE3 digest of UTF-8 string input.

      [?lib 'cx-stdlib/hash']
[$hash:equals [$hash:blake3-string "abc"] [$hash:blake3 "abc"]]
    
      true
    

hash:hasher-new

[$hash:hasher-new] -> element — Create a streaming hasher for the named algorithm (sha256/sha384/sha512/blake3).

      [?lib 'cx-stdlib/hash']
[$hash:format-hex [$hash:hasher-finalize [$hash:hasher-update [$hash:hasher-update [$hash:hasher-new "sha256"] "ab"] "c"]]]
    
      ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad
    

hash:hasher-update

[$hash:hasher-update] -> element — Feed a chunk into a streaming hasher, returning a new hasher with the chunk absorbed.

      [?lib 'cx-stdlib/hash']
[$hash:format-hex [$hash:hasher-finalize [$hash:hasher-update [$hash:hasher-update [$hash:hasher-new "sha256"] "ab"] "c"]]]
    
      ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad
    

hash:hasher-finalize

[$hash:hasher-finalize] -> bytes — Finish a streaming hasher and return the digest of all absorbed chunks.

      [?lib 'cx-stdlib/hash']
[$hash:format-hex [$hash:hasher-finalize [$hash:hasher-update [$hash:hasher-update [$hash:hasher-new "sha256"] "ab"] "c"]]]
    
      ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad
    

hash:format-hex

[$hash:format-hex] -> string — Encode a digest as a lowercase hex string.

      [?lib 'cx-stdlib/hash']
[$hash:format-hex [$hash:sha256 "abc"]]
    
      ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad
    

hash:format-base64-url

[$hash:format-base64-url] -> string — Encode a digest as URL-safe base64 with no padding.

      [?lib 'cx-stdlib/hash']
[$hash:format-base64-url [$hash:parse-hex "deadbeef"]]
    
      '3q2-7w'
    

hash:format-base32

[$hash:format-base32] -> string — Encode a digest as RFC 4648 uppercase base32.

      [?lib 'cx-stdlib/hash']
[$hash:format-base32 [$hash:parse-hex "deadbeef"]]
    
      '32W353Y='
    

hash:parse-hex

[$hash:parse-hex] -> bytes — Decode a hex string to bytes, accepting either case.

      [?lib 'cx-stdlib/hash']
[$hash:equals [$hash:blake3-xof "abc" 1] [$hash:parse-hex "64"]]
    
      true
    

hash:parse-base64-url

[$hash:parse-base64-url] -> bytes — Decode a URL-safe base64 string to bytes.

      [?lib 'cx-stdlib/hash']
[?let [= $d [$hash:sha256 "payload"]] [$hash:equals [$hash:parse-base64-url [$hash:format-base64-url $d]] $d]]
    
      true
    

hash:equals

[$hash:equals] -> bool — Compare two byte sequences for equality in constant time, resisting timing attacks.

      [?lib 'cx-stdlib/hash']
[$hash:equals [$hash:sha256-string "abc"] [$hash:sha256 "abc"]]
    
      true
    

hash:sri-format

[$hash:sri-format] -> string — Format a digest as a W3C Subresource Integrity string (<algo>-<base64>).

      [?lib 'cx-stdlib/hash']
[$hash:sri-format [$hash:sha384 "hi"] "sha384"]
    
      sha384-B5EAbfgShHckT1PQ/c4hDbgfVXV1EOJqzuNcGKa86qKNzbv9bcBBubTcextU439S
    

hash:sri-parse

[$hash:sri-parse] -> element — Parse a W3C SRI string into an [sri algo=… digest=…] element.

      [?lib 'cx-stdlib/hash']
[?let [= $p [$hash:sri-parse [$hash:sri-format [$hash:sha384 "hi"] "sha384"]]] $p@algo]
    
      sha384