Wiki Комиссаренко
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 для обеспечения целостности данных.