Перейти к основному содержимому

Хеширование

Хеширование — это процесс преобразования входных данных (например, строки, файла или любого другого типа информации) в выходные данные фиксированного размера, называемые хешем или хеш-значением. Хеширование используется для хранения паролей, цифровых подписей, проверки целостности и быстрого поиска данных.

Вычисление хеша данных

Для вычисления хеша данных в «1С:Шине» используется тип ХешированиеДанных. Чтобы вычислить хеш данных, создайте объект для хеширования с помощью конструктора ХешированияДанных(). В нем укажите АлгоритмХеширования:

  • Md5,
  • Sha1,
  • Sha256,
  • Sha512,
  • Гост3411_2012_256,
  • Гост3411_2012_512.

Криптопровайдер подбирается автоматически в зависимости от указанного алгоритма. Чтобы самостоятельно задать криптопровайдер, передайте его в качестве аргумента перегрузки конструктора ХешированияДанных(). Если указанный криптопровайдер не поддерживает выбранный алгоритм, выбрасывается исключение ИсключениеКриптографии.

примечание

Для работы криптопровайдеров требуется установить на сервере соответствующие модули (подробнее).

После создания объекта хеширования добавьте в него данные с помощью метода ДобавитьДанные(). Вы также можете указать используемую кодировку.

Результат хеширования хранится в свойстве Результат объекта типа ХешированиеДанных.

Пример вычисления хеша данных, полученных из файла
исп СодержимоеФайла = новый Файл("<Путь к файлу>").ПолучитьПотокЧтения()
знч Хеш = новый ХешированиеДанных(АлгоритмХеширования.Sha1)
.ДобавитьДанные(СодержимоеФайла)
.Результат

Вычисление кода аутентификации сообщения с использованием алгоритма HMAC

В «1С:Шине» реализован механизм вычисления кода аутентификации сообщения с помощью хеш-функции — HMAC. Использование HMAC позволяет гарантировать, что сообщение не было модифицировано и исходит от подлинного источника.

Чтобы вычислить код аутентификации сообщения с помощью хеш-функции, используйте объект типа ВычислительHmac:

// Создание объекта типа ВычислительHmac
// с применением ключа "СекретныйКлюч" и алгоритма хеширования SHA256
// и вычисление кода аутентификации для строки "12345678900987654321"

знч Вычислитель = новый ВычислительHmac("СекретныйКлюч".ВБайты(), АлгоритмХеширования.Sha256)
знч Результат = Вычислитель.ПолучитьРезультат("12345678900987654321".ВБайты())

В объект типа ВычислительHmac можно добавлять данные частями, используя метод ДобавитьДанные(), а затем вычислить результат HMAC для всех добавленных данных с помощью метода ПолучитьРезультат():

знч Вычислитель = новый ВычислительHmac("СекретныйКлюч".ВБайты(),
АлгоритмХеширования.Sha256)
Вычислитель.ДобавитьДанные("1234567890".ВБайты())
Вычислитель.ДобавитьДанные("0987654321".ВБайты())
знч Результат = Вычислитель.ПолучитьРезультат()

Метод ПолучитьРезультат() в качестве параметра может принимать поток данных:

исп Поток = новый Файл("<Путь к файлу>").ПолучитьПотокЧтения()
знч Вычислитель = новый ВычислительHmac("СекретныйКлюч".ВБайты(),
АлгоритмХеширования.Sha256)
знч Результат = Вычислитель.ПолучитьРезультат(Поток)

Для небольшого объема данных используется статический метод Вычислить():

знч РезультатСтатический = ВычислительHmac.Вычислить("1234567890".ВБайты(),
"Ключ".ВБайты(),
АлгоритмХеширования.Sha256)