Módulo de Hashing Criptográfico

Archivo: src/hash.rs (465 líneas)

¿Por qué existe?

Implementa funciones hash criptográficas en Rust puro, sin dependencias externas. Reemplaza las crates sha1, sha2, sha3 y blake3 con implementaciones manuales optimizadas. Sigue los estándares FIPS 180-4 (SHA-1/SHA-256) y FIPS 202 (SHA-3).

Algoritmos implementados

AlgoritmoTamaño digestEstándar
SHA-1160 bits (20 bytes)FIPS 180-4
SHA-256256 bits (32 bytes)FIPS 180-4
SHA-384384 bits (48 bytes)FIPS 180-4
SHA-512512 bits (64 bytes)FIPS 180-4
SHA-3 (224/256/384/512)VariableFIPS 202 (Keccak)
BLAKE3256 bits (32 bytes), extensibleBLAKE3 (2019)
HMAC-SHA256256 bits (32 bytes)RFC 2104

Estructuras principales

API Pública

FunciónDescripción
sha256(datos) -> [u8; 32]Hash SHA-256 de un solo paso
sha3_256(datos) -> [u8; 32]Hash SHA-3 (Keccak) de un solo paso
blake3(datos) -> [u8; 32]Hash BLAKE3 de un solo paso
hmac_sha256(clave, datos) -> [u8; 32]HMAC usando SHA-256
hex_encode(bytes) -> StringConvierte bytes a representación hexadecimal
hex_decode(s) -> Result<Vec<u8>>Decodifica hexadecimal a bytes

Uso desde Forja

Las funciones hash se exponen a través de los módulos hash.fa y hex.fa de la stdlib, con funciones como hash_sha256, hash_sha3, hash_blake3, hmac, hex_codificar y hex_decodificar.

⚡ Rendimiento: SHA-256 está optimizado con operaciones por bloques de 64 bytes, rotaciones inline y expansión de mensaje manual. BLAKE3 usa un árbol binario que permite hashing paralelo de archivos grandes.