crypto
Use crypto for hashing, random values, encoding helpers, password checks, signatures, and file encryption helpers.
import "std:crypto"Example
import "std:crypto"
string digest = crypto.sha256("hello")
string id = crypto.randomUUID()
log digestAPI reference
crypto
crypto.sha1(data: any)
string
Returns a hexadecimal SHA-1 digest.
crypto.sha256(data: any)
string
Returns a hexadecimal SHA-256 digest.
crypto.sha512(data: any)
string
Returns a hexadecimal SHA-512 digest.
crypto.md5(data: any)
string
Returns a hexadecimal MD5 digest.
crypto.sha3_256(data: any)
string
Returns a hexadecimal SHA3-256 digest.
crypto.hmacSha256(key: any, data: any)
string
Returns a hexadecimal HMAC-SHA256 value.
crypto.hmacSha512(key: any, data: any)
string
Returns a hexadecimal HMAC-SHA512 value.
crypto.md5Hash(data: any)
string
Alias of crypto.md5.
crypto.aes256Encrypt(key: any, plaintext: any)
string
Encrypts with AES-GCM using a normalized 256-bit key.
crypto.aes256Decrypt(key: any, ciphertext: any)
string
Authenticates and decrypts AES-GCM ciphertext, returning empty on failure.
crypto.randomBytes(size: any)
string
Generates random bytes.
crypto.randomInt(...args: any)
number
Returns a secure integer in [0, max) or [min, max).
crypto.randomString(length: any)
string
Generates random string.
crypto.randomFloat(...args: any)
number
Generates random float.
crypto.uuidv4()
string
crypto.randomUUID()
string
Generates random uuid.
crypto.random(min: any, max: any)
any
Returns a secure integer in [min, max).
crypto.hash(hashFunc: any, data: any)
string
crypto.pbkdf2(password: any, salt: any, iterations: any, keyLen: any, hashFunc: any)
string
crypto.hexEncode(data: any)
string
crypto.hexDecode(data: any)
string
crypto.binEncode(data: any)
string
crypto.binDecode(data: any)
string
crypto.base64Encode(data: any)
string
crypto.base64Decode(data: any)
string
crypto.ed25519GenerateKeyPair()
object
Generates an Ed25519 key pair encoded as unpadded base64url.
crypto.ed25519Sign(privateKey: any, data: any)
string
Signs data with an Ed25519 seed or private key and returns an unpadded base64url signature.
crypto.ed25519Verify(publicKey: any, data: any, signature: any)
boolean
Verifies an unpadded base64url Ed25519 signature.
crypto.hashPassword(password: any)
string
crypto.verifyPassword(password: any, storedHash: any)
boolean
Verifies password.
crypto.bcryptHash(password: any, cost?: any)
string
Creates a bcrypt password hash using cost 10 by default.
crypto.bcryptVerify(password: any, storedHash: any)
boolean
Verifies a password against a bcrypt hash.
crypto.generateKeyPair()
object
crypto.sign(key: any, data: any)
string
crypto.verify(key: any, data: any, signature: any)
boolean
crypto.constantTimeCompare(a: any, b: any)
boolean
Uses the standard constant-time comparison, including unequal-length rejection.
crypto.encrypt(data: any, password: any)
string
crypto.decrypt(data: any, password: any)
string
crypto.encryptFile(inputPath: any, outputPath: any, password: any)
boolean
Encrypts a file. A failure removes partial output.
crypto.decryptFile(inputPath: any, outputPath: any, password: any)
boolean
Decrypts a file. Authentication failure removes partial output.
crypto.hashFile(filePath: any)
string
crypto.hashDirectory(dirPath: any)
string
crypto.secureErase(filePath: any)
boolean
Bcrypt password hashing
crypto.bcryptHash(password, cost?) → string
Hashes the string representation of password with bcrypt. The optional cost must be between 4 and 31 and defaults to 10. Invalid costs and passwords longer than bcrypt's 72-byte limit return "".
crypto.bcryptVerify(password, storedHash) → boolean
Verifies the string representation of password against a standard bcrypt hash. Both $2a$ and $2b$ hashes are accepted. Malformed hashes return false.
Ed25519 signatures
crypto.ed25519GenerateKeyPair() → object
Generates an Ed25519 key pair. The returned object contains private, a 32-byte private seed, and public, a 32-byte public key. Both values use unpadded base64url encoding.
crypto.ed25519Sign(privateKey, data) → string
Signs the string representation of data. privateKey may be either a 32-byte Ed25519 seed or a 64-byte private key encoded as unpadded base64url. Returns an unpadded base64url signature, or "" if the key is malformed.
crypto.ed25519Verify(publicKey, data, signature) → boolean
Verifies the signature against the string representation of data. The public key and signature must use unpadded base64url encoding. Malformed keys and signatures return false.
Notes
Prefer
import "std:crypto"; the olderimport "osl/crypto"spelling remains supported.
Behavior and limits
AES keys are truncated or zero-padded to 32 bytes; nonce, salt, iteration, file, and ciphertext sizes are validated. Invalid authentication data fails closed and partial output is removed.
Last updated