Содержание:
Хеширование — это одностороннее преобразование данных любой длины в компактный «отпечаток» фиксированного размера по алгоритму, который для одной и той же последовательности символов всегда вернет одинаковый результат. В отличии от шифрования предполагается, что хеширование — это необратимый процесс.
Хеширование в 1С
На данный момент платформа 1С поддерживает 5-ть алгоритмов хеширования: CRC32, MD5, SHA1, SHA256, SHA512.
Ниже приведены примеры Хеша полученные из строки «Исходный текст myblog-1c.ru» разными хеш функциями.

Пример кода по получению Хеша в 1С
|
1 2 3 4 5 6 7 |
ХешированиеДанных = Новый ХешированиеДанных(ХешФункция.MD5); ХешированиеДанных.Добавить(ИсходнаяСтрока); ХешСтрокиМД5 = СтрЗаменить(ХешированиеДанных.ХешСумма, " ", ""); // в качестве аргумента функция ХешированиеДанных.Добавить() может принимать: <Текст>, <Двоичные данные>, <Поток> // так же есть аналогичная функция для файлов ХешированиеДанных.ДобавитьФайл(<ИмяФайла>) |
Краткая характеристика алгоритмов
| Хеш функция | CRC32 | MD5 | SHA1 | SHA256 | SHA512 |
|---|---|---|---|---|---|
| Область применения | Целостность данных | Целостность данных | Целостность данных (Устарел) | Целостность данных, Криптография | Целостность данных, Криптография |
| Год создания | 1975 | 1991 | 1995 | 2002 | 2002 |
| Безопасность | Уязвим к преднамеренным атакам | Взломан | Взломан | Безопасен | Безопасен |
| Размер Хеша в Битах | 32 | 128 | 160 | 256 | 512 |
| Тип значения ХешСуммы в 1С | Число | Двоичные данные | Двоичные данные | Двоичные данные | Двоичные данные |
| Длина ХешСуммы в 1С (после удаления пробелов) | 10 симв. | 32 симв. | 40 симв. | 64 симв. | 128 симв. |
| Формат представления ХешСуммы в 1С | десятеричный | шестнадцатеричный | шестнадцатеричный | шестнадцатеричный | шестнадцатеричный |
| Поддержка платформы 1С | с 8.3.1 | с 8.3.1 | с 8.3.3 | с 8.3.3 | с 8.3.18 |
Сравнение скорости хеширования
Замер времени хеширования 10000 строк длиной от 50 до 150 символов:

* При разных итерациях время немного меняется, в зависимости от загруженности сервера, но соотношения между разными алгоритмами примерно сохраняется.
Хеширование и безопасность
На практике некоторые алгоритмы были признаны не безопасными для криптографии, что не мешает использовать их для других целей, например как «контрольную сумму» целостности данных.
Например алгоритм MD5 считается самым распространенным, доступным на многих языках программирования, достаточно быстрым, но не безопасным, его не рекомендуется использовать в криптографии.
Для дополнительной защиты хешей от расшифровки методом перебора (Brute force) используют следующие приемы:
- Соль — добавление определенной последовательности символов к строке перед шифрованием.
- Перец — аналогичное добавление определенной последовательности символов, которая храниться на изолированном защищенном носителе.
- Итеративное хэширование — повторное хеширование полученного хеша определенное количество раз.
Кроме того, чем сложнее будет исходная строка, тем больше времени потребуется взломщикам, чтобы подобрать ее по полученному Хешу.
