Crypto & Encoding
UUID generation, Base64 encoding, and cryptographic hashing.
UUID
uuid/v4
Generate a random UUID v4 string.
Signature: (uuid/v4) → string
(uuid/v4) ; => "550e8400-e29b-41d4-a716-446655440000" (varies)Each call returns a new unique identifier:
(equal? (uuid/v4) (uuid/v4)) ; => #fBase64 Encoding
Functions for Base64 encoding and decoding of strings and binary data. Uses the standard Base64 alphabet (RFC 4648).
base64/encode
Encode a string to Base64.
Signature: (base64/encode string) → string
(base64/encode "hello") ; => "aGVsbG8="
(base64/encode "") ; => ""base64/decode
Decode a Base64 string back to a UTF-8 string. Errors if the decoded bytes are not valid UTF-8.
Signature: (base64/decode base64-string) → string
(base64/decode "aGVsbG8=") ; => "hello"base64/encode-bytes
Encode a bytevector to Base64.
Signature: (base64/encode-bytes bytevector) → string
(base64/encode-bytes #u8(104 101 108 108 111)) ; => "aGVsbG8="base64/decode-bytes
Decode a Base64 string to a bytevector. Unlike base64/decode, this does not require valid UTF-8.
Signature: (base64/decode-bytes base64-string) → bytevector
(base64/decode-bytes "aGVsbG8=") ; => #u8(104 101 108 108 111)Use cases
Data URIs:
(string/append "data:image/png;base64," (base64/encode-bytes (file/read-bytes "icon.png")))API authentication (Basic Auth):
(define auth-header
(string/append "Basic " (base64/encode (string/append username ":" password))))Hashing
Cryptographic hash functions that return hex-encoded strings.
Security note
MD5 is cryptographically broken — do not use it for passwords, signatures, or any security-sensitive purpose. Use hash/sha256 or hash/hmac-sha256 instead. MD5 is still fine for checksums and non-security uses (cache keys, deduplication).
hash/sha256
Compute the SHA-256 hash of a string. Returns a 64-character hex string.
Signature: (hash/sha256 string) → string
(hash/sha256 "hello")
; => "2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824"hash/md5
Compute the MD5 hash of a string. Returns a 32-character hex string.
Signature: (hash/md5 string) → string
(hash/md5 "hello") ; => "5d41402abc4b2a76b9719d911017c592"hash/hmac-sha256
Compute an HMAC-SHA256 message authentication code. Returns a 64-character hex string.
Signature: (hash/hmac-sha256 key message) → string
(hash/hmac-sha256 "secret-key" "message")
; => "hex-encoded-hmac..."Webhook verification example:
;; Verify a webhook signature from a provider
(define (verify-webhook payload secret signature)
(equal? (hash/hmac-sha256 secret payload) signature))