Wiki Комиссаренко

Материал из Wiki
(Различия между версиями)
Перейти к: навигация, поиск
(Полностью удалено содержимое страницы)
 
(не показаны 2 промежуточные версии 1 участника)
Строка 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:22, 16 декабря 2025

[править] SHA-256

SHA-256 (Secure Hash Algorithm 256-bit) — криптографическая хэш-функция, входящая в семейство SHA-2. Преобразует входные данные произвольной длины в фиксированный 256-битный хэш. Широко используется в технологиях Интернета: цифровые подписи, блокчейн (Биткойн), TLS-сертификаты.

Содержание


[править] Принцип работы

Алгоритм выполняет следующие шаги:

  1. Добавление бита «1» к сообщению.
  2. Добавление нулей до длины, кратной 512 битам.
  3. Добавление 64-битного представления исходной длины.
  4. Разбиение на 512-битные блоки.
  5. Итеративная обработка каждого блока с использованием нелинейных функций и констант.

Математически, каждый блок обрабатывается по формуле: H_{i} = H_{i-1} + \Sigma_{0}(a) + Maj(a,b,c) + \Sigma_{1}(e) + Ch(e,f,g) + K_{t} + W_{t} где H_{i} — текущее состояние хэша, K_{t} — константы, W_{t} — расширенное сообщение.

[править] Пример хэширования

Хэш-значение для пустой строки:

SHA-256("") = 
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855

[править] Реализация на Python

<syntaxhighlight lang="python"> import hashlib

def sha256_hash(data: str) -> str:

   """Возвращает SHA-256 хэш строки в шестнадцатеричном формате."""
   return hashlib.sha256(data.encode()).hexdigest()
  1. Пример использования

if __name__ == "__main__":

   message = "Сети и телекоммуникации"
   print(f"Хэш сообщения '{message}':")
   print(sha256_hash(message))

</syntaxhighlight>

[править] Аналоги и безопасность

SHA-256 считается устойчивой к коллизиям. Для более высоких требований безопасности рекомендуется SHA-3. Процесс хэширования можно схематично представить как **сжатие** входных данных произвольной длины в фиксированный 256-битный «отпечаток»:

H: \{0,1\}^* \to \{0,1\}^{256}

где \{0,1\}^* — множество всех битовых строк, а \{0,1\}^{256} — множество 256-битных хэшей.

Количество возможных уникальных хэшей равно: N = 2^{256} \approx 1.16 \times 10^{77}

При этом каждый бит хэша зависит от каждого бита входных данных, что обеспечивает свойство лавинного эффекта.

[править] Примечания

Персональные инструменты
Пространства имён

Варианты
Действия
Навигация
Инструменты