SHA-256 es la función hash que impulsa a Bitcoin. Ya ha visto lo que hace una función hash; ahora veamos específicamente SHA-256: por qué Satoshi la eligió, cómo procesa los datos internamente y por qué todavía se considera segura mientras que algoritmos más antiguos como MD5 y SHA-1 se han roto.

Pruébelo: SHA-256 en acción

Escriba cualquier cosa a continuación y vea la actualización del resumen SHA-256 en tiempo real. Tenga en cuenta que el resultado siempre es exactamente de 64 caracteres hexadecimales (es decir, 256 bits), independientemente de si escribe una palabra o un párrafo completo.

Escriba cualquier cosa: el resumen se actualiza en vivo. Cambia un personaje para ver el efecto de avalancha.
SHA-256 · 256 bits · 64 hex
1
Change any character in the text
2
Tap «entrada larga» below
3
Look at the blocks — they are linked
BLOCK DATA — try changing any character:
SHA-256 HASH (64 chars = 256 bits):
Web Crypto unavailable (use HTTPS or a modern browser)
TRY SAMPLE STRINGS — click to load:
↑ each sample demonstrates a different hash property
¿Por qué SHA-256 y no MD5 o SHA-1?

No todas las funciones hash son iguales. MD5 y SHA-1 alguna vez fueron el estándar de la industria, hasta que los investigadores encontraron formas de crear colisiones (dos entradas diferentes con el mismo hash). Una vez que se rompe una función hash, no se puede utilizar para proteger el historial financiero. Satoshi eligió SHA-256 porque era la opción estandarizada más sólida disponible en 2008 y sigue intacta en la actualidad.

Haga clic en cada punto para ver por qué es importante para blockchain ▶
Cómo SHA-256 procesa los datos internamente

No es necesario que implemente SHA-256 usted mismo; siempre utilizará una biblioteca auditada. Pero comprender el modelo de procesamiento le ayuda a razonar sobre el rendimiento y las opciones de protocolo: por qué se rellenan las entradas, por qué el procesamiento se realiza en bloques de 512 bits y de dónde proviene esa salida de 256 bits.

Cómo SHA-256 convierte cualquier entrada en un resumen de 256 bits ▶
Aporte
cualquier longitud (bytes)
Almohadilla
agregar 1 bit + longitud → múltiplo de 512 bits
Dividir
en bloques de 512 bits
Comprimir
64 rondas por bloque, mezcla 8 palabras de estado
Producción
Resumen de 256 bits (64 caracteres hexadecimales)
SHA-256 vs Keccak-256: elegir el algoritmo correcto
SHA-256 y Keccak-256 son seguros: solo se usan en cadenas de bloques diferentes
AspectoSHA-256Keccak-256
Diseño internoConstrucción Merkle-DamgårdConstrucción de esponja (familia diferente)
Tamaño de salida256 bits (32 bytes)256 bits (32 bytes)
Estandarizado comoFamilia SHA-2 (FIPS 180-4)Familia SHA-3, pero Ethereum usa relleno preestándar
Utilizado enBitcoin: PoW, raíz de Merkle, doble SHA256dEthereum: derivación de direcciones, espacios de almacenamiento, eventos
EstadoNo se conoce ningún ataque prácticoNo se conoce ningún ataque práctico
VelocidadRápido; aceleración de hardware (SHA-NI)Rápido; perfil de rendimiento ligeramente diferente
SHA-256 en código
Haga clic en cualquier línea para ver la explicación ▼
python
1
import hashlib
2
# Standard SHA-256:
3
digest = hashlib.sha256(b'Hello Bitcoin').hexdigest()
4
print(digest)  # 64 hex characters, always
5
6
# Double SHA-256 (SHA-256d) — used in Bitcoin:
7
inner = hashlib.sha256(b'Hello Bitcoin').digest()  # raw bytes, not hex
8
sha256d = hashlib.sha256(inner).hexdigest()
9
10
# Keccak-256 — used in Ethereum (NOT standard SHA-3):
11
from Crypto.Hash import keccak  # pip install pycryptodome
12
k = keccak.new(digest_bits=256)
13
k.update(b'Hello Ethereum')
14
print(k.hexdigest())  # Different from SHA-256 of same input
Especificidad del protocolo: nunca utilice 'hash' como término genérico en el código blockchain. Nombra siempre la función exacta: SHA-256d para encabezados de bloques de Bitcoin, Keccak-256 para direcciones de Ethereum. El uso de la función incorrecta produce un resumen completamente diferente sin errores: rompe silenciosamente la compatibilidad con el resto de la red.