docs / stdlib / hash

Stdlib index
  1. Overview
  1. Captured-borrow migration worklist (3.3.3)
  2. Owned-bind migration worklist (8.2.7)
  3. Return-side title audit — the ride-through enumeration
  4. stdlib ownership audit
  5. stdlib ownership dispositions (plan 1.3.1 / 4.3.1)

codec

  1. Base64

codec / csv

  1. Csv

codec / json

  1. Json

collection

  1. ArrayList
  2. BPlusTree
  3. Cache
  4. Collectors
  5. HashMap
  6. HashSet
  7. Heap
  8. ImmutableList
  9. ImmutableMap
  10. ImmutableSet
  11. LinkedList
  12. RedBlackTree
  13. Sort

collection / ltm

  1. LtmBPlusTree

concurrent

  1. AtomicInt32
  2. AtomicInt64
  3. Channel
  4. FiberLocal
  5. Lock
  6. Mutex
  7. RwLock
  8. Semaphore
  9. Tasks

error

  1. Exception
  2. NoOptionalValueException
  3. RecoverableException
  4. Throwable
  5. UnrecoverableException

gfx

  1. Sampler
  2. Texture2D

hash

  1. Blake3
  2. DefaultHasher
  3. Hash
  4. MD5
  5. Sha1
  6. Sha256
  7. SipHash
  8. XXHash3

ifx

  1. BackendRegistry
  2. Window

io

  1. Buffer

io / file

  1. File
  2. FileInfo
  3. FileReader
  4. FileWriter
  5. Path
  6. Watcher

io / net

  1. IpAddress
  2. Server
  3. ServerBuilder
  4. SocketAddress
  5. TcpListener
  6. TcpStream
  7. UdpSocket

io / net / dns

  1. Dns

io / net / tls

  1. TlsConnection
  2. TlsListener

io / net / uri

  1. Uri
  2. UriBuilder

lang

  1. Guid
  2. Math
  3. Optional
  4. Pair
  5. Slice
  6. String
  7. StringBuilder

lang / stream

  1. ArrayStream
  2. Stream

math

  1. Camera
  2. Color
  3. DType
  4. Ray
  5. Rotation
  6. Tensor
  7. Transform

math / fft

  1. Fft

math / linalg

  1. LinAlg

math / npio

  1. Npy

math / poly

  1. Poly

math / random

  1. Generator

math / stats

  1. Stats

nucleo

  1. Columns — the Arrow-laid-out substrate
  2. Fused tensor expressions — Fuse
  3. Table — the lazy, typed dataframe
  4. Tape — define-by-run autograd
  5. Transform intrinsics — Grad, Vmap, Jit

process

  1. Command
  2. Process

reflect

  1. Class

search / distance

  1. Distance

search / fuzzy

  1. Matcher

search / ngram

  1. Index

session

  1. PackageInstallException
  2. Packages

time

  1. Clock
  2. DateTimeFormatter
  3. Duration
  4. Instant
  5. LocalDate
  6. LocalDateTime
  7. LocalTime
  8. Period
  9. ZonedDateTime
  10. ZoneId
  11. ZoneOffset

wire

  1. Compressor
  2. Decompressor
  3. Encoder
  4. Schema
  5. SchemaEncoder

xpu

  1. Device
  2. KernelBuffer
  3. KernelStream

xpu / mesh

  1. MeshSimplifier

SipHash

cajeta.hash.SipHash — SipHash-2-4, a 64-bit DoS-resistant keyed hash. Use when the input is attacker-controlled and a hash-map or cache lookup depends on it (HTTP request keys, JWT claim names, user-supplied cache keys): the 128-bit key prevents an attacker from precomputing colliding inputs because they don’t know the key. For internal, non-attacker inputs use XXHash3 instead — roughly 10x faster per byte.

int8[] data = heap int8[12];
int64 h = SipHash.hashKeyed(data, 12, 17, 42);   // one-shot, keyed

SipHash s = heap SipHash(17, 42);
s.writeString("user-key");
int64 digest = s.finish();

Methods

Signature
One-shot statics
static int64 hashKeyed(int8[] data, int64 len, int64 keyLow, int64 keyHigh)Keyed digest of data[0..len) — the common case, no streaming object required
static int64 hashStringKeyed(String s, int64 keyLow, int64 keyHigh)Keyed digest of a String’s UTF-8 bytes
Streaming
SipHash(int64 keyLow, int64 keyHigh)Construct a streaming SipHash with the 128-bit key as two int64 halves
void update(int8[] data, int64 len)Absorb data[0..len) into the running digest
void reset()Re-initialize the state from the stored key so the instance can be reused
int64 finish()Finalize the streamed input and return the 64-bit digest
Hasher typed writes
void writeBoolean(boolean v)Absorb v as one byte: 1 for true, 0 for false
void writeInt8(int8 v)Absorb the raw byte of v
void writeInt16(int16 v)Absorb the 2 raw bytes of v
void writeInt32(int32 v)Absorb the 4 raw bytes of v
void writeInt64(int64 v)Absorb the 8 raw bytes of v
void writeUInt8(uint8 v)Absorb the raw byte of v
void writeUInt16(uint16 v)Absorb the 2 raw bytes of v
void writeUInt32(uint32 v)Absorb the 4 raw bytes of v
void writeUInt64(uint64 v)Absorb the 8 raw bytes of v
void writeFloat32(float32 v)Absorb the 4 raw bytes of v
void writeFloat64(float64 v)Absorb the 8 raw bytes of v
void writeBytes(int8[] data)Absorb every byte of data
void writeBytesRange(int8[] data, int64 offset, int64 length)Absorb length bytes of data (v1: offset is ignored)
void writeString(String s)Absorb a String’s UTF-8 bytes
void writeObject(Object obj)Absorb obj.hash() as 8 bytes

⚑ = @EntryPoint

See also

Source: docs/stdlib/hash/SipHash.md · 2 min read · 410 words