ХешированиеДанных.Добавить

Методы · Append

Синтаксис и применение ХешированиеДанных.Добавить в платформе 1С:Предприятие. Описание и примеры кода.

Синтаксис

Добавить(<ДвоичныеДанные>)
Добавить(<Текст>)
Добавить(<Поток>, <Количество>)
Полное описание, параметры и ограничения

ХешированиеДанных.Добавить (DataHashing.Append)

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

Добавить (Append)

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

Вариант синтаксиса: Добавить двоичные данные

Синтаксис:
Добавить(<ДвоичныеДанные>)
Параметры:

<ДвоичныеДанные> (обязательный)
Тип: ДвоичныеДанные.
Добавляемые двоичные данные.
Описание варианта метода:
Обновляет хеш-сумму, с учетом добавления двоичных данных.
Вариант синтаксиса: Добавить текстовые данные

Синтаксис:
Добавить(<Текст>)
Параметры:

<Текст> (обязательный)
Тип: Строка.
Добавляемые текстовые данные (в UTF8 кодировке).
Описание варианта метода:
Обновляет хеш-сумму, с учетом добавления текстовых данных.
Вариант синтаксиса: Добавить данные из потока

Синтаксис:
Добавить(<Поток>, <Количество>)
Параметры:

<Поток> (обязательный)
Тип: Поток.
Поток, из которого получаются данные для обновления хеш-суммы.

<Количество> (необязательный)
Тип: Число.
Количество байтов, которые читаются из потока и участвуют в обновлении хеш-суммы. Если количество не задано, то читаются все данные до конца потока.
Описание варианта метода:
Обновляет хеш-сумму с учетом добавления данных из потока.
Доступность:

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

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

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

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

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

Посчитать 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С» и не аффилирован с ней.