Глобальный контекст.ПолучитьHexСтрокуИзДвоичныхДанных

Методы · GetHexStringFromBinaryData

Преобразует двоичные данные в строку формата Base 16 (Hex).

Синтаксис

ПолучитьHexСтрокуИзДвоичныхДанных(<ДвоичныеДанные>)
Полное описание, параметры и ограничения

Глобальный контекст.ПолучитьHexСтрокуИзДвоичныхДанных (Global context.GetHexStringFromBinaryData)

Глобальный контекст (Global context)

ПолучитьHexСтрокуИзДвоичныхДанных (GetHexStringFromBinaryData)

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

Синтаксис:
ПолучитьHexСтрокуИзДвоичныхДанных(<ДвоичныеДанные>)
Параметры:

<ДвоичныеДанные> (обязательный)
Тип: ДвоичныеДанные.
Двоичные данные.
Возвращаемое значение:
Тип: Строка.

Описание:

Преобразует двоичные данные в строку формата Base 16 (Hex).

Доступность:

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

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

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

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

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

Передать байты как Base64 или показать их в Hex

Для JSON удобно строковое Base64, для диагностики — Hex. Отдельно демонстрируем варианты, где результат хранится буфером или двоичными данными.

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

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

Подготовка

  1. Серверный контекст. Учебная строка abc кодируется в UTF-8 без BOM.

  2. В примере стандартное Base64, не вариант base64url для URL или токенов.

Данные = ПолучитьДвоичныеДанныеИзСтроки("abc", КодировкаТекста.UTF8, Ложь);
Буфер = ПолучитьБуферДвоичныхДанныхИзДвоичныхДанных(Данные);
Base64Текст = ПолучитьBase64СтрокуИзДвоичныхДанных(Данные);
HexТекст = ПолучитьHexСтрокуИзБуфераДвоичныхДанных(Буфер);
Сообщить(Base64Текст);
Сообщить(HexТекст);
ИзBase64 = ПолучитьДвоичныеДанныеИзBase64Строки(Base64Текст);
ИзHex = ПолучитьБуферДвоичныхДанныхИзHexСтроки(HexТекст);
Сообщить(ПолучитьСтрокуИзДвоичныхДанных(ИзBase64, КодировкаТекста.UTF8));
Сообщить(ПолучитьСтрокуИзБуфераДвоичныхДанных(ИзHex, КодировкаТекста.UTF8));
Base64Буфер = ПолучитьBase64БуферДвоичныхДанныхИзБуфераДвоичныхДанных(Буфер);
ВосстановленныйБуфер = ПолучитьБуферДвоичныхДанныхИзBase64БуфераДвоичныхДанных(Base64Буфер);
Base64Данные = ПолучитьBase64ДвоичныеДанныеИзДвоичныхДанных(Данные);
ВосстановленныеДанные = ПолучитьДвоичныеДанныеИзBase64ДвоичныхДанных(Base64Данные);
HexБуфер = ПолучитьHexБуферДвоичныхДанныхИзБуфераДвоичныхДанных(Буфер);
БуферПослеHex = ПолучитьБуферДвоичныхДанныхИзHexБуфераДвоичныхДанных(HexБуфер);
HexДанные = ПолучитьHexДвоичныеДанныеИзДвоичныхДанных(Данные);
ДанныеПослеHex = ПолучитьДвоичныеДанныеИзHexДвоичныхДанных(HexДанные);
Сообщить(ПолучитьBase64СтрокуИзБуфераДвоичныхДанных(ВосстановленныйБуфер) = Base64Текст);
Сообщить(ПолучитьHexСтрокуИзДвоичныхДанных(ВосстановленныеДанные) = HexТекст);
Сообщить(ПолучитьСтрокуИзБуфераДвоичныхДанных(БуферПослеHex, КодировкаТекста.UTF8));
Сообщить(ПолучитьСтрокуИзДвоичныхДанных(ДанныеПослеHex, КодировкаТекста.UTF8));
Сообщить(ПолучитьСтрокуИзДвоичныхДанных(ПолучитьДвоичныеДанныеИзHexСтроки(HexТекст), КодировкаТекста.UTF8));
Сообщить(ПолучитьСтрокуИзБуфераДвоичныхДанных(ПолучитьБуферДвоичныхДанныхИзBase64Строки(Base64Текст), КодировкаТекста.UTF8));
Сообщить(Base64Строка(Данные) = Base64Текст);
Сообщить(ПолучитьСтрокуИзДвоичныхДанных(Base64Значение(Base64Текст), КодировкаТекста.UTF8));

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

  1. Получаем три байта abc и показываем строковые Base64 и Hex.

  2. Декодируем строковые представления и проверяем исходный текст.

  3. Буферные и двоичные варианты кодирования содержат символы кодированного представления, а не исходные три байта.

  4. Декодируем каждый вариант; Base64Строка и Base64Значение показывают старые краткие функции для двоичных данных.

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

  1. Base64 равно YWJj, Hex равно 616263.

  2. Все обратные преобразования выводят abc, сравнения представлений дают Истина.

  3. Не передавайте Hex-строку декодировщику Base64: это другой формат и другой смысл байтов.

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

Каждый показанный формат восстанавливает исходные байты при использовании парной функции.

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

  1. Base64 не шифрует и не защищает данные: любой получатель может их восстановить.

  2. Двоичное содержимое Base64Данные — кодированное представление. Для HTTP-заголовка или JSON обычно нужна строковая функция.

  3. При работе с чужим API не заменяйте Base64 на base64url вручную без проверки его контракта.

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

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