Función Hash
Una herramienta que crea huellas digitales para datos
Una función hash es una herramienta de programación que crea huellas digitales para datos. Recibe cualquier cantidad de datos, los baraja y devuelve un resultado corto y único.
SHA = Secure Hashing Algorithm (Algoritmo de Hash Seguro), 256 = 256 bits (el tamaño del resultado).
El resultado de la función hash es solo un montón de bytes. Las letras y números que ves son esos bytes representados en caracteres hexadecimales.
Propiedades
¿Qué hace que una función hash sea una función hash?
Algunas propiedades separan una función hash básica de una fuerte:
- Determinista. Los mismos datos de entrada siempre producen el mismo hash.
- Tamaño fijo. Cualquier entrada produce un hash del mismo tamaño (SHA-256 siempre produce 32 bytes).
- Efecto avalancha. Un pequeño cambio en la entrada cambia completamente el hash.
- Resistente a la preimagen. No es posible ir hacia atrás, del hash a los datos originales.
- Resistente a colisiones. Es inviable encontrar dos entradas distintas que produzcan el mismo hash.
Funciones hash en Bitcoin
¿Qué funciones hash usa Bitcoin?
Bitcoin usa principalmente SHA-256, pero también combina funciones hash:
SHA-256
La función hash principal. Recibe datos y produce 32 bytes.
SHA-256
HASH256 (SHA-256 doble)
SHA-256 aplicado dos veces. Se usa en TXIDs, hashes de bloque y checksums.
HASH256
HASH160 (RIPEMD-160 ∘ SHA-256)
SHA-256 seguido de RIPEMD-160, produciendo 20 bytes. Se usa para crear hashes de clave pública y hashes de script.
HASH160
HMAC-SHA512
Un hash con clave, usado en la derivación de claves extendidas (BIP32).
HMAC-SHA512
PBKDF2
Una función de derivación de clave (con HMAC-SHA512, 2048 iteraciones), usada para transformar una frase mnemónica en una seed (BIP39).