Имя: Пароль:
1C
1С v8
Как сделать хэш
,
0 mrCreator
 
26.12.16
08:17
Всем добрый день!

подскажите пожалуйста как средствами 1С сделать хеш по такому шаблону:

$hash = MD5(login.MD5(password).SALT)
1 DrZombi
 
гуру
26.12.16
08:25
(0) Что такое "MD5" ?
Где описание логики работы функции? :)
2 DrZombi
 
гуру
26.12.16
08:26
Простой хэш своими руками :)
http://tuzik87.ru54.com/site/creative/article/hash.html
3 Это_mike
 
26.12.16
08:26
(1) дык этта... https://ru.wikipedia.org/wiki/MD5
4 d546
 
26.12.16
08:27
ХешированиеДанных (DataHashing)
Свойства:

ХешСумма (HashSum)
ХешФункция (HashFunction)

Методы:

Добавить (Append)
ДобавитьФайл (AppendFile)

Конструкторы:

По указанной хеш-функции

Описание:

Реализует инкрементальный расчет хеш-суммы по добавленным данным. Способ расчета и тип вычисляемого значения определяются типом хеш-функции.

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

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

ХешФункция
5 shpioleg
 
26.12.16
08:27
Класс ХешированиеДанных курил?
6 DrZombi
 
гуру
26.12.16
08:28
(3) Он, конечно. Но я думал ТС до этого сам должен был придти :DDDD

Но судя по вопросам, он скромно не упомянул, что ему нужен код писаный на 1С :)

http://1c-programmer-blog.ru/programmirovanie/md5-v-1s.html
7 mrCreator
 
26.12.16
08:30
не совсем у меня возникла сложность понимания именно конструкции.

вот это я нашел на просторах интернета:

   Хеш = Новый ХешированиеДанных(ХешФункция.MD5);

   Хеш.Добавить(тСтрока);

   Возврат Хеш.ХешСумма;

не могу понять как мне собрать вот такую конструкцию:
MD5(login.MD5(password).SALT)
8 mrCreator
 
26.12.16
08:32
Вот так верно будет или как?:

   Хеш = Новый ХешированиеДанных(ХешФункция.MD5);

   Хеш.Добавить(password);

   Пароль = Хеш.ХешСумма;

   Хеш2 = Новый ХешированиеДанных(ХешФункция.MD5);

   Хеш2.Добавить("логин."+Пароль+"."+"соль");

   ИтоговоаяСтрока = Хеш2.ХешСумма;
9 d546
 
26.12.16
08:34
$hash = MD5(login.MD5(password).SALT)

это хоть на каком языке?
10 d546
 
26.12.16
08:36
Хеш2.Добавить("логин."+Пароль+"."+"соль");

понравился перевод-интерпретация кода :)
11 mrCreator
 
26.12.16
08:40
:)

Это у меня написано в описании API при подключении к стороннему WEB-сервису. Указано, что с забросом обязательно нужно передавать хэш такого вида....
12 Asmody
 
26.12.16
08:40
(8) точка в логине лишняя.
(9) php это
13 Это_mike
 
26.12.16
08:41
(10) а госнаркоконтроль не возражает?
14 mrCreator
 
26.12.16
08:41
(12) а перед солью точка должна остаться?
15 mrCreator
 
26.12.16
08:46
Вот так должно получиться:

Хеш2.Добавить("логин."+Пароль+"."+"соль");

или вот так:

Хеш2.Добавить("логин"+Пароль+"соль");

или так:

Хеш2.Добавить("логин"+Пароль+"."+"соль");
16 shpioleg
 
26.12.16
08:47
Есть подозрение, что тебе 3 раза в 1С придется вызывать хеширование, чтобы итоговая сумма была в ХешСумма.
В 1С метод Добавить принимает на вход строку или ДвоичныеДанные
17 shpioleg
 
26.12.16
08:53

Хеш = Новый ХешированиеДанных(ХешФункция.MD5);
ХешПасс = Новый ХешированиеДанных(ХешФункция.MD5);
ХешПасс.Добавить (Пасс);
Хеш.Добавить (Логин);
Хеш.Добавить (ХешПасс.ХешСумма);
Хеш.Добавить (Соль);


В Хеш.ХешСумма должен быть результат
18 mrCreator
 
26.12.16
08:56
Спасибо!

Это похоже на правду :)

Буду пробовать...
19 mrCreator
 
26.12.16
10:12
С результатом пришлось еще повозиться...

результат функции есть Двоичные данные (которые на самом деле являются шестнадцатиричными), которые нужно еще перевести в строку и метод xbase64строка() возвращает строку в неверном формате.

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

https://www.calc.ru/kalkulyator-kodov.html

и вот оно счастье у меня хэш в нормальном виде, таком каком он нужен :)

Извращения дело добровольное
20 DrZombi
 
гуру
26.12.16
10:43
(11) Сперва разберись, на каком языке написано, что за Солд и что содержит... А потом к 1С переходи :)
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.