Профессия — 1С

Рукопашный бой Карташ

Категории

Хеширование данных

рубрики: Платформа 8.3 | Дата: 3 Январь, 2018
Скачать обработку с примерами из статьи: professia1c_hash.epf
Платформа: 8.3; Тип формы: управляемая.

В платформе 1С:Предприятия 8.3 появился механизм хеширования. Напомню, что хеширование представляет собой преобразование каких-то исходных данных с помощью некоторого алгоритма в битовую строку фиксированной длины.




Преобразование это одностороннее, то есть имея хеш нельзя получить из него исходные данные с помощью какой-либо функции. Можно только методом подбора, что требует достаточно долгого времени и больших вычислительных ресурсов. Поэтому хеширование часто используется для хранения паролей. То есть, если злоумышленник даже получил доступ к базе данных с паролями, которые хранятся в виде хеша, он не сможет сразу ими воспользоваться. Как минимум ему потребуется некоторое время, чтобы методом перебора (брутфорса) расшифровать пароли. И если раньше, чтобы получить хеш в коде 1С приходилось прибегать к различным ухищрениям, то теперь мы можем сделать это напрямую, воспользовавшись новым объектом платформы 8.3 — ХешированиеДанных

Типы хеш-функций

Платформа предоставляет на выбор четыре типа хеш-функций:

  • CRC32
  • MD5
  • SHA1
  • SHA256

Выбор алгоритма осуществляется на этапе создания объекта ХешированиеДанных с помощью конструктора.

Пример использования

Приведу пример функции, которая возвращает хеш по переданным в нее исходной строке и типу хеш-функции







Функция ПолучитьХешСумму(ИсходнаяСтрока, ТипХеша)

	ХешДанных = Новый ХешированиеДанных(ТипХеша);
	ХешДанных.Добавить(ИсходнаяСтрока);

	Возврат ХешДанных.ХешСумма;

КонецФункции

Например мы хотим получить хеш слова «Пароль», используя алгоритм MD5. Вызываем нашу функцию


Хеш = ПолучитьХешСумму("Пароль", ХешФункция.MD5);

и получаем значение «5E BE 55 3E 01 79 9A 92 7B 1D 04 59 24 BB D4 FD»

В общем все достаточно просто. И как всегда по ссылке в заголовке статьи можно скачать обработку с рассмотренным здесь примером.

2 комментария на «“Хеширование данных”»

  1. Дмирий:

    А как убрать пробелы между символами

    • Owner:

      Стандартно:
      Хеш = СтрЗаменить(Хеш, » «, «»);
      Несмотря на то что
      Возврат ХешДанных.ХешСумма;
      возвращает тип «Двоичные данные» 1С спокойно преобразует их в строку.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

   

2018г. Профессия — 1С. Обмен опытом по программированию в 1С