SHA-256 est la fonction de hachage qui alimente Bitcoin. Vous avez déjà vu ce que fait une fonction de hachage. Examinons maintenant spécifiquement SHA-256 : pourquoi Satoshi l'a choisi, comment il traite les données en interne et pourquoi il est toujours considéré comme sécurisé alors que des algorithmes plus anciens comme MD5 et SHA-1 ont été brisés.

Essayez-le : SHA-256 en action

Tapez n'importe quoi ci-dessous et regardez la mise à jour du résumé SHA-256 en temps réel. Notez que la sortie comporte toujours exactement 64 caractères hexadécimaux, soit 256 bits, que vous tapiez un mot ou un paragraphe entier.

Tapez n'importe quoi - le résumé est mis à jour en direct. Changez un personnage pour voir l'effet d'avalanche.
SHA-256 · 256 bits · 64 hex
1
Change any character in the text
2
Tap «Entrée longue» 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
Pourquoi SHA-256 et pas MD5 ou SHA-1 ?

Toutes les fonctions de hachage ne sont pas égales. MD5 et SHA-1 étaient autrefois la norme de l'industrie, jusqu'à ce que les chercheurs trouvent des moyens de créer des collisions (deux entrées différentes avec le même hachage). Une fois qu’une fonction de hachage est rompue, elle ne peut plus être utilisée pour sécuriser l’historique financier. Satoshi a choisi SHA-256 car il s'agissait de l'option standardisée la plus puissante disponible en 2008, et elle reste ininterrompue aujourd'hui.

Cliquez sur chaque point pour voir pourquoi c'est important pour la blockchain ▶
Comment SHA-256 traite les données en interne

Vous n'avez pas besoin d'implémenter SHA-256 vous-même : vous utiliserez toujours une bibliothèque auditée. Mais comprendre le modèle de traitement vous aide à raisonner sur les performances et les choix de protocole : pourquoi les entrées sont complétées, pourquoi le traitement s'effectue par blocs de 512 bits et d'où vient cette sortie de 256 bits.

Comment SHA-256 transforme n'importe quelle entrée en un résumé de 256 bits ▶
Saisir
n'importe quelle longueur (octets)
Tampon
ajouter 1 bit + longueur → multiple de 512 bits
Diviser
en blocs de 512 bits
Compresse
64 tours par bloc, mélangez 8 mots d'état
Sortir
Résumé de 256 bits (64 caractères hexadécimaux)
SHA-256 vs Keccak-256 : choisir le bon algorithme
SHA-256 et Keccak-256 sont tous deux sécurisés : ils sont simplement utilisés dans différentes blockchains
AspectSHA-256Keccak-256
Conception interneConstruction Merkle-DamgårdConstruction en éponge (famille différente)
Taille de sortie256 bits (32 octets)256 bits (32 octets)
Standardisé commeFamille SHA-2 (FIPS 180-4)Famille SHA-3 – mais Ethereum utilise un remplissage pré-standard
Utilisé dansBitcoin : PoW, racine Merkle, double-SHA256dEthereum : dérivation d'adresses, emplacements de stockage, événements
StatutAucune attaque pratique connueAucune attaque pratique connue
VitesseRapide; accélération matérielle (SHA-NI)Rapide; profil de performances légèrement différent
SHA-256 dans le code
Cliquez sur n'importe quelle ligne pour voir l'explication ▼
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
Spécificité du protocole : ne jamais utiliser « hash » comme terme générique dans le code blockchain. Nommez toujours la fonction exacte : SHA-256d pour les en-têtes de bloc Bitcoin, Keccak-256 pour les adresses Ethereum. L’utilisation d’une mauvaise fonction produit un résumé complètement différent sans erreur : elle rompt silencieusement la compatibilité avec le reste du réseau.