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 |
