Реализует инкрементальный расчет хеш-суммы по добавленным данным. Способ расчета и тип вычисляемого значения определяются типом хеш-функции.
Полное описание, параметры и ограничения
ХешированиеДанных (DataHashing)
ХешированиеДанных (DataHashing)
Доступен, начиная с версии 8.3.1.
Свойства:
ХешСумма (HashSum)
ХешФункция (HashFunction)
Методы:
Добавить (Append)
ДобавитьФайл (AppendFile)
Конструкторы:
По указанной хеш-функции
Описание:
Реализует инкрементальный расчет хеш-суммы по добавленным данным. Способ расчета и тип вычисляемого значения определяются типом хеш-функции.
Доступность:
Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.
См. также:
ХешФункция
Использование в версии:
Доступен, начиная с версии 8.3.1.
Методическая информация
Практические примеры
Посчитать SHA-256 и проверить последовательное добавление частей
Хеш одного блока abc должен совпадать с хешем двух последовательно добавленных блоков a и bc. Кодировка и отсутствие BOM заданы явно.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Выполняйте на сервере. Не добавляйте перевод строки или BOM к abc.
Используется SHA-256; результат ХешСумма этого алгоритма — двоичные данные.
ПолныеДанные = ПолучитьДвоичныеДанныеИзСтроки("abc", КодировкаТекста.UTF8, Ложь);
Хеш = Новый ХешированиеДанных(ХешФункция.SHA256);
Хеш.Добавить(ПолныеДанные);
ПолнаяСумма = ВРег(ПолучитьHexСтрокуИзДвоичныхДанных(Хеш.ХешСумма));
ПоЧастям = Новый ХешированиеДанных(ХешФункция.SHA256);
ПоЧастям.Добавить(ПолучитьДвоичныеДанныеИзСтроки("a", КодировкаТекста.UTF8, Ложь));
ПоЧастям.Добавить(ПолучитьДвоичныеДанныеИзСтроки("bc", КодировкаТекста.UTF8, Ложь));
СуммаЧастей = ВРег(ПолучитьHexСтрокуИзДвоичныхДанных(ПоЧастям.ХешСумма));
Сообщить(ПолнаяСумма);
Сообщить(ПолнаяСумма = СуммаЧастей);
Сообщить(Хеш.ХешФункция);
Ожидаемая = "BA7816BF8F01CFEA414140DE5DAE2223B00361A396177A9CB410FF61F20015AD";
Сообщить(ПолнаяСумма = Ожидаемая);Разбор по шагам
Явно кодируем исходный текст, чтобы хеш зависел от понятной последовательности байтов.
Первый объект получает весь блок, второй — две части в исходном порядке.
Преобразуем хеш в Hex и приводим регистр для сравнения представлений.
Сравниваем оба результата и заранее известную контрольную сумму abc.
Как проверить результат
Оба сравнения равны Истина; Hex совпадает с Ожидаемая.
Замените bc на cb: сравнение хешей должно стать Ложь — порядок байтов важен.
Ожидаемый результат
SHA-256 одинаков для одинаковых байтов независимо от разбивки на части.
На что обратить внимание
Хеш без доверенного эталона не доказывает подлинность отправителя; для этого нужен согласованный механизм подписи или MAC.
Обычный SHA-256 не предназначен для самостоятельного хранения пользовательских паролей.
ХешФункция.CRC32 возвращает другой тип результата: не переносите преобразование в Hex двоичных данных на все алгоритмы автоматически.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.