Хеширование
Хеширование — это процесс преобразования входных данных (например, строки, файла или любого другого типа информации) в выходные данные фиксированного размера, называемые хешем или хеш-значением. Хеширование используется для хранения паролей, цифровых подписей, проверки целостности и быстр ого поиска данных.
Вычисление хеша данных
Для вычисления хеша данных в «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)