DevLearn logo
Skill Up With Me
Interactive Learning
Signing in…

Стандарт SHA-256

🔒 Sign in to use this

SHA-256 — та самая хеш-функция, на которой держится Bitcoin. Ты уже знаешь, что такое хеш — теперь разберём именно SHA-256: почему её выбрал Сатоши, как она внутри обрабатывает данные и почему она до сих пор считается надёжной, тогда как MD5 и SHA-1 уже сломаны.

Попробуй: SHA-256 в действии

Введи что угодно ниже и смотри, как в реальном времени обновляется дайджест SHA-256. Обрати внимание: на выходе всегда ровно 64 hex-символа — то есть 256 бит — независимо от того, ввёл ли ты одно слово или целый абзац.

Введи любой текст — дайджест обновляется сразу. Измени один символ и посмотри лавинный эффект.
SHA-256 · 256 bits · 64 hex
1
Change any character in the text
2
Tap «Длинный ввод» 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
Почему SHA-256, а не MD5 или SHA-1?

Хеш-функции разные. MD5 и SHA-1 когда-то были стандартом индустрии — пока исследователи не научились строить коллизии (два разных входа с одним хешом). Сломанную хеш-функцию нельзя использовать, чтобы защищать финансовую историю. Сатоши выбрал SHA-256: в 2008 году это был самый сильный стандартизованный вариант, и по сей день практических поломок нет.

Нажми на точку — зачем это блокчейну ▶
1992 → сломан
MD5
1995 → сломан
SHA-1
2001 → Bitcoin (2009)
SHA-256
✓ Ещё стоит
2012 → Ethereum
Keccak-256
Как SHA-256 внутри обрабатывает данные

Реализовывать SHA-256 самому не нужно — всегда есть проверенные библиотеки. Но модель обработки полезна: зачем padding, почему блоки по 512 бит и откуда берутся 256 бит выхода.

Как SHA-256 превращает любой вход в 256-битный дайджест ▶
📥
Вход
любая длина (байты)
📐
Padding
бит 1 + длина → кратно 512 бит
✂️
Разбить
на блоки по 512 бит
🔁
Сжатие
64 раунда на блок, 8 слов состояния
📤
Выход
256 бит (64 hex) — дайджест
SHA-256 и Keccak-256: какой алгоритм выбрать
Оба надёжны — просто в разных блокчейнах разные стеки
АспектSHA-256Keccak-256
Внутреннее устройствоКонструкция Merkle–DamgårdSponge (другая семья)
Размер выхода256 бит (32 байта)256 бит (32 байта)
СтандартSHA-2 (FIPS 180-4)SHA-3 — но у Ethereum padding до стандарта
Где используетсяBitcoin: PoW, Merkle root, double-SHA256dEthereum: адреса, слоты хранилища, события
СтатусНет известной практической атакиНет известной практической атаки
СкоростьБыстро; железо SHA-NIБыстро; немного другой профиль
SHA-256 в коде
Клик по строке — пояснение ▼
python
1
import hashlib
2
# Обычный SHA-256:
3
digest = hashlib.sha256(b'Hello Bitcoin').hexdigest()
4
print(digest)  # всегда 64 hex-символа
5
6
# Double SHA-256 (SHA-256d) — как в Bitcoin:
7
inner = hashlib.sha256(b'Hello Bitcoin').digest()  # сырые байты, не hex
8
sha256d = hashlib.sha256(inner).hexdigest()
9
10
# Keccak-256 — в Ethereum (НЕ стандартный 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())  # отличается от SHA-256 того же входа
⚠️В протоколе нельзя говорить просто «хеш». Называй функцию явно: SHA-256d для заголовков Bitcoin, Keccak-256 для адресов Ethereum. Неверная функция даёт другой дайджест без ошибки в рантайме — тихо ломается совместимость с сетью.
🔒 Sign in to use this