Inhaltsverzeichnis

std.hash

Umfangreiche Hash-Bibliothek mit nicht-kryptografischen Funktionen (FNV1a-32/64, DJB2, Murmur2/3, xxHash-32/64, CRC32, CityHash-32/64, FarmHash-32/64) für Hash-Tables und Datenintegrität sowie kryptografischen Algorithmen: MD5 (Legacy), SHA-256, SHA-3 (224/256/512), BLAKE3, SHAKE-128/256. Für Passwort-Speicherung: bcrypt (cost 10), Argon2d/i/id, scrypt und PBKDF2-HMAC-SHA256 mit 100.000 Iterationen.

Einsatzbereiche: Hash-Table-Index-Berechnung, Datenintegrität, Passwort-Hashing (bcrypt/Argon2 empfohlen), digitale Signaturen, Checksummen für Dateiübertragungen.

Autor: Andreas Röne
Copyright: 2024-2025 Andreas Röne


Imports


Konstanten

Name Typ Wert Sichtbarkeit
FNV_OFFSET_BASIS_32 int64 2166136261 priv
FNV_PRIME_32 int64 16777619 priv
FNV_OFFSET_BASIS_64 int64 14695981039346656037 priv
FNV_PRIME_64 int64 1099511628211 priv

Funktionen

Signatur Sichtbarkeit Beschreibung
HashFNV1a32(data: pchar): int64 pub FNV1a-32-Hash aus Zeichenkette berechnen
HashFNV1a32Bytes(data: pchar, len: int64): int64 pub FNV1a-32-Hash aus Byte-Array berechnen
HashFNV1a64(data: pchar): int64 pub FNV1a-64-Hash aus Zeichenkette berechnen
HashFNV1a64Bytes(data: pchar, len: int64): int64 pub FNV1a-64-Hash aus Byte-Array berechnen
HashDJB2(data: pchar): int64 pub DJB2-Hash aus Zeichenkette berechnen
MURMUR_M int64 0x5bd1e995 priv Murmur2-Multiplikationskonstante
MURMUR_R int64 24 priv Murmur2-Bit-Rotationskonstante
HashMurmur2(data: pchar, seed: int64): int64 pub Murmur2-Hash mit Seed berechnen
HashMurmur2Default(data: pchar): int64 pub Murmur2-Hash mit Standard-Seed berechnen
CRC32_TABLE array[256]int64 [ priv Vorberechnete CRC32-Lookup-Tabelle
HashCRC32(data: pchar): int64 pub CRC32-Prüfsumme berechnen
SHA256_K array[64]int64 [ priv SHA-256-Rundenkonstanten-Tabelle
Ch(x: int64, y: int64, z: int64): int64 priv SHA-256-Choice-Hilfsfunktion
Maj(x: int64, y: int64, z: int64): int64 priv SHA-256-Majority-Hilfsfunktion
Rotr(x: int64, n: int64): int64 priv Bitweise Rechtsrotation um n Stellen
Sigma0(x: int64): int64 priv SHA-256-Sigma0-Kompressionsfunktion
Sigma1(x: int64): int64 priv SHA-256-Sigma1-Kompressionsfunktion
Gamma0(x: int64): int64 priv SHA-256-Gamma0-Nachrichterweiterungsfunktion
Gamma1(x: int64): int64 priv SHA-256-Gamma1-Nachrichterweiterungsfunktion
SHA256Add(a: int64, b: int64): int64 priv Modulare Addition für SHA-256
SHA256RightShift(a: int64, n: int64): int64 priv Logischer Rechtsshift für SHA-256
HashSHA256(data: pchar): int64 pub SHA-256-Hash aus Zeichenkette berechnen
HashPassword(password: pchar, salt: pchar): int64 pub Passwort mit Salt hashen
HashPasswordSimple(password: pchar, salt: int64): int64 pub Passwort mit Integer-Salt hashen
HashTableIndex(key: pchar, table_size: int64): int64 pub Hash-Table-Index aus Schlüssel berechnen
HashBytes(data: pchar, len: int64): int64 pub Generischen Hash aus Bytes berechnen
HashInt64(key: int64): int64 pub 64-Bit-Integer hashen
HashInt32(key: int64): int64 pub 32-Bit-Integer hashen
MD5_A0 int64 0x67452301 priv MD5-Initialisierungskonstante A
MD5_B0 int64 0xefcdab89 priv MD5-Initialisierungskonstante B
MD5_C0 int64 0x98badcfe priv MD5-Initialisierungskonstante C
MD5_D0 int64 0x10325476 priv MD5-Initialisierungskonstante D
MD5_K array[64]int64 [ priv MD5-Sinustabelle für Rundenkonstanten
MD5_ROTL(x: int64, n: int64): int64 priv Bitweise Linksrotation für MD5
MD5_F(x: int64, y: int64, z: int64): int64 priv MD5-Hilfsfunktion Runde 1
MD5_G(x: int64, y: int64, z: int64): int64 priv MD5-Hilfsfunktion Runde 2
MD5_H(x: int64, y: int64, z: int64): int64 priv MD5-Hilfsfunktion Runde 3
MD5_I(x: int64, y: int64, z: int64): int64 priv MD5-Hilfsfunktion Runde 4
HashMD5String(data: pchar): int64 pub MD5-Hash aus Zeichenkette als int64
HashMD5StringHex(data: pchar): pchar pub MD5-Hash als Hex-Zeichenkette zurückgeben
HashMD5Bytes(data: pchar, len: int64): int64 pub MD5-Hash aus Byte-Array berechnen
HashMD5FileChunk(chunk: pchar, chunk_len: int64, state: int64): int64 pub MD5-Hash eines Datei-Chunks berechnen
HashMD5FileInit(): int64 pub MD5-Dateihash-Zustand initialisieren
HashMD5Quick(data: pchar): int64 pub Schnellen MD5-Hash berechnen
MD5Verify(data: pchar, expected_hex: pchar): bool pub MD5-Hash gegen Erwartungswert prüfen
HashBLAKE3(data: pchar): int64 pub BLAKE3-Hash aus Zeichenkette berechnen
HashBLAKE3Bytes(data: pchar, len: int64): int64 pub BLAKE3-Hash aus Byte-Array berechnen
HashBLAKE3Hex(data: pchar): pchar pub BLAKE3-Hash als Hex-Zeichenkette zurückgeben
HashSHA3_224(data: pchar): int64 pub SHA-3-224-Hash berechnen
HashSHA3_256(data: pchar): int64 pub SHA-3-256-Hash berechnen
HashSHA3_512(data: pchar): int64 pub SHA-3-512-Hash berechnen
HashSHA3_256Hex(data: pchar): pchar pub SHA-3-256-Hash als Hex zurückgeben
HashKeccak(data: pchar): int64 pub Keccak-Hash berechnen
HashSHAKE128(data: pchar, output_bits: int64): int64 pub SHAKE-128-XOF mit variabler Ausgabelänge
HashSHAKE256(data: pchar, output_bits: int64): int64 pub SHAKE-256-XOF mit variabler Ausgabelänge
CITY_C1 int64 0xcc9e2d51 priv CityHash-Mischkonstante 1
CITY_C2 int64 0x1b873593 priv CityHash-Mischkonstante 2
HashCity32(data: pchar): int64 pub CityHash-32-Hash berechnen
CITY_K1 int64 0xc6a4a7935bd1e995 priv CityHash64-Schlüsselkonstante 1
CITY_K2 int64 0x9e3779b97f4a7c15 priv CityHash64-Schlüsselkonstante 2
HashCity64(data: pchar): int64 pub CityHash-64-Hash berechnen
HashCity64WithSeed(data: pchar, seed: int64): int64 pub CityHash-64-Hash mit Seed berechnen
HashCity64Hex(data: pchar): pchar pub CityHash-64-Hash als Hex zurückgeben
FARM_C1 int64 0x1e35a7bd priv FarmHash-Mischkonstante 1
FARM_C2 int64 0x9e3779b9 priv FarmHash-Mischkonstante 2
HashFarm32(data: pchar): int64 pub FarmHash-32-Hash berechnen
FARM_K0 int64 0xc3a5c85c97cb3127 priv FarmHash64-Schlüsselkonstante K0
FARM_K1 int64 0xb492b66fbe98f273 priv FarmHash64-Schlüsselkonstante K1
FARM_K2 int64 0x9ae16a3b2f90404f priv FarmHash64-Schlüsselkonstante K2
HashFarm64(data: pchar): int64 pub FarmHash-64-Hash berechnen
HashFarm64WithSeed(data: pchar, seed: int64): int64 pub FarmHash-64-Hash mit Seed berechnen
HashFarm64Hex(data: pchar): pchar pub FarmHash-64-Hash als Hex zurückgeben
MURMUR3_C1 int64 0xcc9e2d51 priv Murmur3-Mischkonstante 1
MURMUR3_C2 int64 0x1b873593 priv Murmur3-Mischkonstante 2
MurmurMix(h: int64, k: int64): int64 priv Murmur3-Hash-Mischoperation
HashMurmur3_32(data: pchar, seed: int64): int64 pub Murmur3-32-Hash mit Seed berechnen
HashMurmur3_32Default(data: pchar): int64 pub Murmur3-32-Hash mit Standard-Seed
XXH_PRIME1 int64 0x9e3779b185ebc87 priv xxHash-Primzahlkonstante 1
XXH_PRIME2 int64 0xc2b2ae3d27d4eb4 priv xxHash-Primzahlkonstante 2
XXH_PRIME3 int64 0x165667b19e3779f9 priv xxHash-Primzahlkonstante 3
XXH_PRIME4 int64 0x85ebca77c2b2ae63 priv xxHash-Primzahlkonstante 4
XXH_PRIME5 int64 0x27d4eb2f165667c5 priv xxHash-Primzahlkonstante 5
HashxxHash32(data: pchar): int64 pub xxHash-32-Hash berechnen
HashxxHash64(data: pchar): int64 pub xxHash-64-Hash berechnen
VerifyHash(data: pchar, algorithm: int64, expected_hex: pchar): bool pub Hash-Wert gegen Algorithmus prüfen
PBKDF2_ITERATIONS int64 100000 priv Standard-Iterationsanzahl für PBKDF2
PBKDF2HMacSHA256(password: pchar, salt: pchar, iterations: int64): int64 priv PBKDF2-HMAC-SHA256-Kernfunktion
HashPBKDF2(password: pchar, salt: pchar, iterations: int64): int64 pub PBKDF2-Hash mit Iterationsanzahl berechnen
HashPBKDF2Default(password: pchar, salt: pchar): int64 pub PBKDF2-Hash mit Standard-Iterationen
HashPBKDF2Hex(password: pchar, salt: pchar, iterations: int64): pchar pub PBKDF2-Hash als Hex-Zeichenkette zurückgeben
BCRYPT_COST int64 10 priv Standard-Kostenfaktor für bcrypt
BCRYPT_SALT_LEN int64 16 priv bcrypt-Salt-Länge in Bytes
BCRYPT_HASH_LEN int64 24 priv bcrypt-Hash-Länge in Bytes
BCryptEncryptEksBlowfish(password: pchar, salt: pchar, cost: int64): int64 priv EKS-Blowfish-Verschlüsselung für bcrypt
HashBCrypt(password: pchar, cost: int64): int64 pub bcrypt-Hash mit Kostenfaktor berechnen
HashBCryptWithSalt(password: pchar, salt: pchar, cost: int64): int64 pub bcrypt-Hash mit eigenem Salt berechnen
HashBCryptHex(password: pchar, cost: int64): pchar pub bcrypt-Hash als Hex zurückgeben
HashBCryptFormatted(password: pchar, cost: int64): pchar pub bcrypt-Hash im Standardformat ausgeben
BCryptVerify(password: pchar, hash: int64): bool pub Passwort gegen bcrypt-Hash prüfen
ARGON2_VERSION int64 0x13 priv Argon2-Versionsnummer
ARGON2_DEFAULT_MEMORY int64 65536 priv Standard-Speicherbedarf in Kilobyte
ARGON2_DEFAULT_ITERATIONS int64 3 priv Standard-Iterationsanzahl für Argon2
ARGON2_DEFAULT_PARALLELISM int64 4 priv Standard-Parallelitätsgrad für Argon2
Argon2BlockHash(input: pchar, len: int64): int64 priv Argon2-Block-Hash-Hilfsfunktion
Argon2F(data: pchar, segment_len: int64): int64 priv Argon2-Komprimierungsfunktion F
HashArgon2d(password: pchar, salt: pchar, pub Argon2d-Hash datenabhängig berechnen
HashArgon2i(password: pchar, salt: pchar, pub Argon2i-Hash datenunabhängig berechnen
HashArgon2id(password: pchar, salt: pchar, pub Argon2id-Hybrid-Hash berechnen
HashArgon2(password: pchar, salt: pchar): int64 pub Argon2-Hash mit Standardparametern
HashArgon2Hex(password: pchar, salt: pchar): pchar pub Argon2-Hash als Hex zurückgeben
HashArgon2Formatted(password: pchar, salt: pchar): pchar pub Argon2-Hash im PHC-Format ausgeben
Argon2Verify(password: pchar, hash: int64): bool pub Passwort gegen Argon2-Hash prüfen
SCRYPT_N int64 16384 priv scrypt-Kostenparameter N
SCRYPT_r int64 8 priv scrypt-Blockgrößenparameter r
SCRYPT_p int64 1 priv scrypt-Parallelisierungsparameter p
HashScrypt(password: pchar, salt: pchar, pub scrypt-Hash mit Parametern berechnen
HashScryptDefault(password: pchar, salt: pchar): int64 pub scrypt-Hash mit Standardparametern
HashScryptHex(password: pchar, salt: pchar): pchar pub scrypt-Hash als Hex zurückgeben
ComparePasswordHashes(hash1: int64, hash2: int64): bool pub Zwei Passwort-Hashes sicher vergleichen
GenerateSalt(len: int64): int64 pub Kryptografisches Salt generieren
PasswordStrength(password: pchar): int64 pub Passwortstärke als Zahlenwert bewerten