Wiki Комиссаренко
(Полностью удалено содержимое страницы) |
|||
| Строка 1: | Строка 1: | ||
| + | {{Песочница}} | ||
| + | = SHA-256 = | ||
| + | '''SHA-256''' (Secure Hash Algorithm 256-bit) — криптографическая [[хэш-функция]], входящая в семейство [[SHA-2]]. Преобразует входные данные произвольной длины в фиксированный 256-битный хэш. Широко используется в технологиях [[Интернет|Интернета]]: [[Цифровая подпись|цифровые подписи]], [[Блокчейн|блокчейн]] ([[Биткойн]]), [[TLS]]-сертификаты. | ||
| + | __TOC__ | ||
| + | |||
| + | == Принцип работы == | ||
| + | Алгоритм выполняет следующие шаги: | ||
| + | # Добавление бита «1» к сообщению. | ||
| + | # Добавление нулей до длины, кратной 512 битам. | ||
| + | # Добавление 64-битного представления исходной длины. | ||
| + | # Разбиение на 512-битные блоки. | ||
| + | # Итеративная обработка каждого блока с использованием нелинейных функций и констант. | ||
| + | |||
| + | Математически, каждый блок обрабатывается по формуле: | ||
| + | <math>H_{i} = H_{i-1} + \Sigma_{0}(a) + Maj(a,b,c) + \Sigma_{1}(e) + Ch(e,f,g) + K_{t} + W_{t}</math> | ||
| + | где <math>H_{i}</math> — текущее состояние хэша, <math>K_{t}</math> — константы, <math>W_{t}</math> — расширенное сообщение. | ||
| + | |||
| + | == Пример хэширования == | ||
| + | Хэш-значение для пустой строки: | ||
| + | <pre> | ||
| + | SHA-256("") = | ||
| + | e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 | ||
| + | </pre> | ||
| + | |||
| + | === Реализация на Python === | ||
| + | <syntaxhighlight lang="python"> | ||
| + | import hashlib | ||
| + | |||
| + | def sha256_hash(data: str) -> str: | ||
| + | """Возвращает SHA-256 хэш строки в шестнадцатеричном формате.""" | ||
| + | return hashlib.sha256(data.encode()).hexdigest() | ||
| + | |||
| + | # Пример использования | ||
| + | if __name__ == "__main__": | ||
| + | message = "Сети и телекоммуникации" | ||
| + | print(f"Хэш сообщения '{message}':") | ||
| + | print(sha256_hash(message)) | ||
| + | </syntaxhighlight> | ||
| + | |||
| + | == Аналоги и безопасность == | ||
| + | SHA-256 считается устойчивой к [[Коллизия (криптография)|коллизиям]]. Для более высоких требований безопасности рекомендуется [[SHA-3]]. Процесс хэширования можно схематично представить как **сжатие** входных данных произвольной длины в фиксированный 256-битный «отпечаток»: | ||
| + | |||
| + | <math>H: \{0,1\}^* \to \{0,1\}^{256}</math> | ||
| + | |||
| + | где <math>\{0,1\}^*</math> — множество всех битовых строк, а <math>\{0,1\}^{256}</math> — множество 256-битных хэшей. | ||
| + | |||
| + | Количество возможных уникальных хэшей равно: | ||
| + | <math>N = 2^{256} \approx 1.16 \times 10^{77}</math> | ||
| + | |||
| + | При этом каждый бит хэша зависит от каждого бита входных данных, что обеспечивает свойство [[лавинный эффект (криптография)|лавинного эффекта]]. | ||
| + | |||
| + | == Примечания == | ||
| + | {{примечания}} | ||
| + | * {{книга | автор = Кнут Д. | заглавие = Искусство программирования | том = 2 | год = 2007 | страницы = 456-460}} | ||
| + | * {{статья | автор = NIST | заглавие = FIPS PUB 180-4 | год = 2015 | url = https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf}} | ||
| + | * Алгоритм используется в [[HTTPS]] для обеспечения целостности данных. | ||
| + | |||
| + | [[Категория:Криптография]] | ||
| + | [[Категория:Сетевые протоколы]] | ||
Версия 08:16, 16 декабря 2025
SHA-256
SHA-256 (Secure Hash Algorithm 256-bit) — криптографическая хэш-функция, входящая в семейство SHA-2. Преобразует входные данные произвольной длины в фиксированный 256-битный хэш. Широко используется в технологиях Интернета: цифровые подписи, блокчейн (Биткойн), TLS-сертификаты.
Содержание |
Принцип работы
Алгоритм выполняет следующие шаги:
- Добавление бита «1» к сообщению.
- Добавление нулей до длины, кратной 512 битам.
- Добавление 64-битного представления исходной длины.
- Разбиение на 512-битные блоки.
- Итеративная обработка каждого блока с использованием нелинейных функций и констант.
Математически, каждый блок обрабатывается по формуле:
где
— текущее состояние хэша,
— константы,
— расширенное сообщение.
Пример хэширования
Хэш-значение для пустой строки:
SHA-256("") =
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
Реализация на Python
<syntaxhighlight lang="python"> import hashlib
def sha256_hash(data: str) -> str:
"""Возвращает SHA-256 хэш строки в шестнадцатеричном формате.""" return hashlib.sha256(data.encode()).hexdigest()
- Пример использования
if __name__ == "__main__":
message = "Сети и телекоммуникации"
print(f"Хэш сообщения '{message}':")
print(sha256_hash(message))
</syntaxhighlight>
Аналоги и безопасность
SHA-256 считается устойчивой к коллизиям. Для более высоких требований безопасности рекомендуется SHA-3. Процесс хэширования можно схематично представить как **сжатие** входных данных произвольной длины в фиксированный 256-битный «отпечаток»:
где
— множество всех битовых строк, а
— множество 256-битных хэшей.
Количество возможных уникальных хэшей равно:
При этом каждый бит хэша зависит от каждого бита входных данных, что обеспечивает свойство лавинного эффекта.
Примечания
- Шаблон:Книга
- Шаблон:Статья
- Алгоритм используется в HTTPS для обеспечения целостности данных.