Каталог@Mail.ru - каталог ресурсов интернет HitMeter - счетчик посетителей сайта, бесплатная статистика

Хеш-функция SHA1: краткое описание + исходник

Шифры и криптография Математика На главную Хеш-функции Новости Для отзывов

Характеристики хеш-функции SHA1

SHA1 - 160-битная хеш-функция, созданная в 1995 г. и в настоящее время являющаяся одной из наиболее известных функций криптографического хеширования. В следующей табличке приведены технические характеристики хеш-функции SHA1:

Длина хеш-значения, бит160
Количество раундов "перемешивания"80
Ожидаемая архитектура, бит32
Размер блоков обработки, бит512
Скорость вычисленийОтносительно высокая: быстрее MD5 и всех SHA2
Распределение хешейБлизко к равномерному
Успешное обнаружение коллизийКитайские учёные, 2005 г., 2^63 операций
Рекомендуемая длина хешируемых паролей (англ. алфавит)не менее 9-10


Насчёт длины паролей отдельный коммент. Пароли в 6-7 символов английского алфавита (26 симв. или чуть больше - знаки препинания, допустим, добавим) можно подобрать в ДОМАШНИХ условиях за неполный день, если только иметь ХОРОШУЮ ПРОГУ или знать, как её написать.

Также коммент по распределению хешей: что это такое и каким оно должно быть, есть на сиём сайте, а именно здесь. Там был введён хитрый параметр a и показано, как с его помощью оценивать "качество" хеш-функций. Путём эксперимента с усечёнными вариациями хеш-функции SHA1 при некоторых значениях a (0,25 и 1) показано, что SHA1 - довольно хорошо спроектирована как 160-битная хеш-функция - при данной длине хеша сложно высосать что-то намного лучшее. И заметим: SHA1 - и по сей день не так уж редко используемая хеш-функция, хотя уже выдуманы хеш-функции и покруче (то же семейство хеш-функций SHA2).

Исходник хеш-функции SHA1

ТУТА можно скачать программный модуль, реализующий хеш-функцию SHA1. Язык программирования: Visual Basic. Для применения требуется в коде прикладной проги вызывать функцию GetSHA1, параметр - хешируемая строка, выход - хеш в строковом представлении.

Примеры:
GetSHA1("Blondinka") = "65EFB770 FD7EEACE 259FC7EC F36C8BF1 A96B1C17"
GetSHA1("Blondinko") = "05CC27FF AB670586 6CD81CE2 925D8E31 C578A6BD"

Кстати, в приведённых примерах ярко виден лавинный эффект при хешировании: мы немного изменили вход хеш-функции (одну букву всего), зато насколько изменился выход хеш-функции!

copyright © Исканцев Н.В., 2012

На главную
X