ХешированиеДанных.ХешСумма

Свойства · HashSum

Тип: Число, ДвоичныеДанные. Содержит текущее значение хеш-суммы. Для функций MD5, SHA1, SHA256, SHA512, и Неактивно – значение типа ДвоичныеДанные, для функции CRC32 – Число.

Полное описание, параметры и ограничения

ХешированиеДанных.ХешСумма (DataHashing.HashSum)

ХешированиеДанных (DataHashing)

ХешСумма (HashSum)

Доступен, начиная с версии 8.3.18.

Использование:
Только чтение.
Описание:
Тип: Число, ДвоичныеДанные.
Содержит текущее значение хеш-суммы. Для функций MD5, SHA1, SHA256, SHA512, и Неактивно – значение типа ДвоичныеДанные, для функции CRC32 – Число.
Доступность:

Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.

Использование в версии:

Доступен, начиная с версии 8.3.18.

Описание изменено в версии 8.3.26.

Методическая информация

Практические примеры

Посчитать SHA-256 и проверить последовательное добавление частей

Хеш одного блока abc должен совпадать с хешем двух последовательно добавленных блоков a и bc. Кодировка и отсутствие BOM заданы явно.

Где и как запускать

Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.

Подготовка

  1. Выполняйте на сервере. Не добавляйте перевод строки или BOM к abc.

  2. Используется SHA-256; результат ХешСумма этого алгоритма — двоичные данные.

ПолныеДанные = ПолучитьДвоичныеДанныеИзСтроки("abc", КодировкаТекста.UTF8, Ложь);
Хеш = Новый ХешированиеДанных(ХешФункция.SHA256);
Хеш.Добавить(ПолныеДанные);
ПолнаяСумма = ВРег(ПолучитьHexСтрокуИзДвоичныхДанных(Хеш.ХешСумма));
ПоЧастям = Новый ХешированиеДанных(ХешФункция.SHA256);
ПоЧастям.Добавить(ПолучитьДвоичныеДанныеИзСтроки("a", КодировкаТекста.UTF8, Ложь));
ПоЧастям.Добавить(ПолучитьДвоичныеДанныеИзСтроки("bc", КодировкаТекста.UTF8, Ложь));
СуммаЧастей = ВРег(ПолучитьHexСтрокуИзДвоичныхДанных(ПоЧастям.ХешСумма));
Сообщить(ПолнаяСумма);
Сообщить(ПолнаяСумма = СуммаЧастей);
Сообщить(Хеш.ХешФункция);
Ожидаемая = "BA7816BF8F01CFEA414140DE5DAE2223B00361A396177A9CB410FF61F20015AD";
Сообщить(ПолнаяСумма = Ожидаемая);

Разбор по шагам

  1. Явно кодируем исходный текст, чтобы хеш зависел от понятной последовательности байтов.

  2. Первый объект получает весь блок, второй — две части в исходном порядке.

  3. Преобразуем хеш в Hex и приводим регистр для сравнения представлений.

  4. Сравниваем оба результата и заранее известную контрольную сумму abc.

Как проверить результат

  1. Оба сравнения равны Истина; Hex совпадает с Ожидаемая.

  2. Замените bc на cb: сравнение хешей должно стать Ложь — порядок байтов важен.

Ожидаемый результат

SHA-256 одинаков для одинаковых байтов независимо от разбивки на части.

На что обратить внимание

  1. Хеш без доверенного эталона не доказывает подлинность отправителя; для этого нужен согласованный механизм подписи или MAC.

  2. Обычный SHA-256 не предназначен для самостоятельного хранения пользовательских паролей.

  3. ХешФункция.CRC32 возвращает другой тип результата: не переносите преобразование в Hex двоичных данных на все алгоритмы автоматически.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.