SHA-256 Hash Generator
Генерує хеш SHA-256 з будь-якого тексту
Введення тексту
Хеш SHA-256
Хеш SHA-256 буде відображено тут…
Що таке хешування SHA-256?
SHA-256 (Secure Hash Algorithm 256-bit) — це криптографічна хеш-функція з сімейства SHA-2, опублікована NIST у 2001 році як частина FIPS 180-2 (оновлено у FIPS 180-4). Для будь-якого вхідного значення — одного символу, файлу розміром кілька гігабайт або порожнього рядка — SHA-256 виробляє фіксований 256-бітний (32-байтний) дайджест, який прийнято відображати у вигляді 64 шістнадцяткових символів. SHA-256 є найпоширенішою хеш-функцією у виробничих системах сьогодні: вона лежить в основі ланцюжків TLS-сертифікатів, алгоритму доказу виконаної роботи Bitcoin, Subresource Integrity (SRI) та робочих процесів підписання коду.
SHA-256 є однобічною функцією: обчислення хешу з вхідних даних відбувається швидко (сотні мегабайт за секунду на сучасному апаратному забезпеченні), проте зворотний процес — пошук вхідних даних, що дають заданий хеш — є обчислювально нездійсненним. Ця властивість, що називається стійкістю до відновлення прообразу, робить SHA-256 придатним для хешування паролів (у поєднанні із сіллю та розтягуванням ключа), цифрових підписів та перевірки цілісності даних. На відміну від MD5 і SHA-1, жодної колізійної атаки або атаки відновлення прообразу проти повного SHA-256 не було продемонстровано.
Сімейство SHA-2 включає шість варіантів: SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224 і SHA-512/256. SHA-256 працює з 32-бітними словами та виконує 64 раунди на блок, оптимізовані для 32-бітних процесорів. SHA-512 використовує 64-бітні слова та 80 раундів, що може бути швидшим на 64-бітних платформах. Для більшості застосунків, де достатньо 256-бітного дайджесту, SHA-256 залишається рекомендацією за замовчуванням від NIST, IETF і CA/Browser Forum.
Навіщо використовувати онлайн-генератор SHA-256?
Генерація хешу SHA-256 зазвичай вимагає команди в терміналі або кількох рядків коду. Цей інструмент у браузері дозволяє обчислювати дайджести SHA-256 без встановлення будь-чого, перемикання контексту чи написання скрипту.
Сфери застосування SHA-256
Порівняння варіантів сімейства SHA-2
SHA-256 належить до сімейства SHA-2, визначеного у FIPS 180-4. Кожен варіант відрізняється розміром дайджесту, характеристиками продуктивності та запасом безпеки. У таблиці нижче порівнюються всі варіанти SHA-2, з якими ви, ймовірно, зустрінетесь.
| Варіант | Розмір дайджесту | Довжина hex | Розмір у байтах | Найкраще для |
|---|---|---|---|---|
| SHA-256 | 256 bits | 64 hex chars | 32 bytes | TLS, blockchain, code signing, JWTs, SRI |
| SHA-224 | 224 bits | 56 hex chars | 28 bytes | Truncated SHA-256 — rare, specific compliance |
| SHA-384 | 384 bits | 96 hex chars | 48 bytes | Government / CNSS, higher collision margin |
| SHA-512 | 512 bits | 128 hex chars | 64 bytes | Digital signatures, HMAC with large keys |
| SHA-512/256 | 256 bits | 64 hex chars | 32 bytes | SHA-512 speed on 64-bit CPUs, 256-bit output |
SHA-256 проти SHA-1, MD5 та SHA-3
Вибір правильного алгоритму хешування залежить від ваших вимог безпеки та обмежень сумісності. SHA-256 займає оптимальне практичне місце: він безпечний, підтримується повсюдно (включаючи Web Crypto API) і достатньо швидкий для більшості робочих навантажень. Таблиця порівняння нижче охоплює властивості, що найбільше важливі при виборі хеш-функції.
| Властивість | SHA-256 | SHA-1 | MD5 | SHA-3-256 |
|---|---|---|---|---|
| Digest size | 256 bits (64 hex) | 160 bits (40 hex) | 128 bits (32 hex) | 256 bits (64 hex) |
| Security status | Secure | Broken (2017) | Broken (2004) | Secure |
| Collision resistance | 2^128 operations | Practical attack | Practical attack | 2^128 operations |
| Block size | 512 bits | 512 bits | 512 bits | 1600 bits (sponge) |
| Rounds | 64 | 80 | 64 | 24 |
| Standard | FIPS 180-4 | FIPS 180-4 | RFC 1321 | FIPS 202 |
| Web Crypto API | Yes | Yes | No | No |
| Primary use today | TLS, blockchain, SRI | Legacy git only | Non-security checksums | Backup standard |
Як SHA-256 працює всередині
SHA-256 обробляє вхідні дані блоками по 512 біт (64 байти) через конструкцію Меркля–Дамгора. Алгоритм ініціалізує вісім 32-бітних слів стану (H0–H7), отриманих із дробових частин квадратних коренів перших восьми простих чисел. Кожен блок проходить через 64 раунди змішування, що використовують побітові операції (AND, XOR, NOT, циклічний зсув вправо, логічний зсув вправо) та 64 константи раундів, отримані з кубічних коренів перших 64 простих чисел.
SHA-256: b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9
(256 bits = 32 bytes = 64 hex characters)
| Крок | Опис |
|---|---|
| Padding | Append a 1-bit, then zeros until the message length is 448 mod 512. Append the original message length as a 64-bit big-endian integer. |
| Block splitting | Divide the padded message into 512-bit (64-byte) blocks. |
| Message schedule | Expand each 16-word (32-bit) block into 64 words using sigma functions with right-rotate and right-shift operations. |
| Compression | Process 64 rounds per block using Ch, Maj, and two Sigma functions with 64 round constants derived from cube roots of the first 64 primes. |
| Output | Concatenate the eight 32-bit state words (H0-H7) into a 256-bit (32-byte) digest, rendered as 64 hexadecimal characters. |
Ефект лавини гарантує, що зміна одного біта у вхідних даних змінює приблизно 50% бітів виводу. Ця властивість у поєднанні зі стійкістю до колізій на рівні 2^128 операцій пояснює, чому SHA-256 залишається базовою рекомендацією для застосунків, критичних з точки зору безпеки, у 2026 році.
Приклади коду SHA-256
SHA-256 доступний нативно в кожній основній мові та середовищі виконання. Web Crypto API надає його в браузерах без будь-яких бібліотек. Наведені нижче приклади демонструють реальні шаблони використання, включаючи обробку Unicode-вхідних даних та хешування файлів.
// Works in all modern browsers and Node.js 18+
async function sha256(text) {
const data = new TextEncoder().encode(text)
const hashBuffer = await crypto.subtle.digest('SHA-256', data)
const hashArray = Array.from(new Uint8Array(hashBuffer))
return hashArray.map(b => b.toString(16).padStart(2, '0')).join('')
}
await sha256('hello world')
// → "b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9"
// Node.js (built-in crypto module)
const crypto = require('crypto')
crypto.createHash('sha256').update('hello world').digest('hex')
// → "b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9"import hashlib
# Basic SHA-256 hash
result = hashlib.sha256(b'hello world').hexdigest()
print(result) # → "b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9"
# Hash a string (encode to bytes first)
text = 'café ☕'
hashlib.sha256(text.encode('utf-8')).hexdigest()
# → "3eb53e00aa1bb4b1e8aab1ab38e56e6b8fb0b20e1cf7e1d19f36e4fad2537445"
# Hash a file in chunks (memory-efficient)
with open('release.tar.gz', 'rb') as f:
sha = hashlib.sha256()
for chunk in iter(lambda: f.read(8192), b''):
sha.update(chunk)
print(sha.hexdigest())package main
import (
"crypto/sha256"
"fmt"
)
func main() {
data := []byte("hello world")
hash := sha256.Sum256(data)
fmt.Printf("%x\n", hash)
// → b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9
}# Using sha256sum (Linux) or shasum (macOS) echo -n "hello world" | sha256sum # → b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9 - # macOS echo -n "hello world" | shasum -a 256 # → b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9 - # Verify a file checksum echo "b94d27b... myfile.bin" | sha256sum -c # → myfile.bin: OK # Using openssl (cross-platform) echo -n "hello world" | openssl dgst -sha256 # → SHA2-256(stdin)= b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9