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-256 (Texto)

Hace hash de una cadena de texto usando la función hash SHA-256.

Escribe cualquier secuencia de caracteres

0 caracteres
SHA-256
0 bytes

Esto es solo un ejemplo rápido de la función hash SHA-256. Hace hash de texto (caracteres ASCII) en lugar de bytes hexadecimales. Para hacer hash de datos brutos reales de Bitcoin con SHA-256, usa SHA-256 y HASH256.

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:

  1. Determinista. Los mismos datos de entrada siempre producen el mismo hash.
  2. Tamaño fijo. Cualquier entrada produce un hash del mismo tamaño (SHA-256 siempre produce 32 bytes).
  3. Efecto avalancha. Un pequeño cambio en la entrada cambia completamente el hash.
  4. Resistente a la preimagen. No es posible ir hacia atrás, del hash a los datos originales.
  5. 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

SHA-256

SHA-256 simple. Hace hash de los bytes de datos usando la función hash SHA-256.

0 bytes
SHA-256
0 bytes

HASH256 (SHA-256 doble)

SHA-256 aplicado dos veces. Se usa en TXIDs, hashes de bloque y checksums.

HASH256

HASH256

SHA-256 doble. Se usa para hashear cabeceras de bloque, datos de transacción y prácticamente cualquier cosa que necesite hash en Bitcoin.

0 bytes
SHA-256
SHA-256

SHA-256(SHA-256(dados))

0 bytes

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

HASH160

SHA-256 + RIPEMD-160. Se usa para acortar una clave pública o script antes de convertirlo en una dirección.

Una clave pública o un script, por ejemplo

0 bytes
SHA-256
RIPEMD-160

RIPEMD-160(SHA-256(dados))

0 bytes

HMAC-SHA512

Un hash con clave, usado en la derivación de claves extendidas (BIP32).

HMAC-SHA512

HMAC-SHA512

Se usa al derivar claves extendidas.

semilla o (clave privada/pública + índice de 4 bytes)

0 bytes

"Bitcoin seed" o chain code

0 bytes
HMAC-SHA512

HMAC-SHA512(datos, clave)

0 bytes

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).

PBKDF2

PBKDF2

(y una passphrase opcional).>Cree la semilla de una cartera HD a partir de una

frase mnemónica

passphrase

(la sal debe empezar con el prefijo "mnemonic")
PBKDF2
  • iteraciones: 2048
  • algoritmo: HMAC-SHA512
  • tamaño: 64 bytes

PBKDF2(contraseña, sal, iteraciones, algoritmo, tamaño)

0 bytes

Nunca introduzcas tu frase mnemónica en un sitio web, ni uses una frase mnemónica generada por un sitio. Los sitios pueden guardar fácilmente la semilla y usarla para robar todos tus bitcoins.