0. Diversus 2015 25.02.13 10:50 Сейчас в теме

Работа с криптографией на примере получения хэша SHA-512 в 1С

Понадобилось мне как то сделать одну СМС-рассылку в 1С с методом усиленной авторизации, в которой необходимо было получить хэш SHA-512. Было перерыто половина интернета и ничего толкового именно по SHA-512 найдено так и не было...
В результате был найден способ как получить криптографическую функцию в 1С не копаясь в RFC и спецификациях относительно быстро и самое главное отлаженную от и до.

Перейти к публикации

Комментарии
Избранное Подписка Сортировка: Древо
1. andrewks 1268 25.02.13 16:11 Сейчас в теме
Я думаю чуть-чуть модифицировав код, можно завставить шифровать и расшифровывать данные

хэш-функция в принципе не способна шифровать и расшифровывать данные
2. Diversus 2015 25.02.13 16:17 Сейчас в теме
(1) Я знаю, что хэш-функция это необратимая функция.
Я говорю о том, что с помощью такого подхода можно заставить ее и шифровать. Заменив функцию SHA-512, на, допустим, функцию по шифрованию AES, DES, RC4 и т.д.
Мы получим превосходные данные по скорости работы.
3. andrewks 1268 25.02.13 16:25 Сейчас в теме
(2) "заставить ее и шифровать" кого - её? хэш-функцию, или 1С?

подход к исполнению в 1С скриптов js/vbs, как бы, не нов, ещё на 7.7 активно применялся.
4. Diversus 2015 25.02.13 16:27 Сейчас в теме
(3) Конечно речь идет о 1С.
И я так же знаю, что такой подход не нов. Я об этом упомянул в статье:
Конечно, я не претендую на оригинальность идеи, но, все же я думаю, кто-то найдет эту информацию полезной для себя.
5. andrewks 1268 25.02.13 16:33 Сейчас в теме
(4) право, не хочется разводить холивар, но смысл этой публикации мне не совсем понятен.

1. код вчистую взят из http://www.happycode.info/javascript-sha-512/ , однако ссылки на первоисточник кода безжалостно выдраны.
2. используется типовой, давно известный приём вызова скрипта из 1С.

пользуясь такой идеологией, можно на каждый выложенный в интернете полезный джава-скрипт оформить отдельную публикацию на Инфостарте.
6. Diversus 2015 25.02.13 17:54 Сейчас в теме
(5) Ссылку на первоисточник кода на JScript указал.
Сначала хотел уменьшить код функции, чтобы не раздувать публикацию. Хотел указать ссылку в конце, а потом благополучно забыл.
Спасибо что поправили.

Теперь про холивар и прочее.
Тут я не согласен с Вами.

Повторюсь еще раз... Я НЕ НАШЕЛ в интернете хэш-функции SHA-512 для 1С. НИГДЕ!
Решил поделиться с сообществом. Может быть кому-нибудь пригодится так же как и мне.

Что в этом плохого?
pbahushevich; mms76; CyberCerber; sasha777666; +4 Ответить
8. Гость 26.02.13 10:29
(6)

Я НЕ НАШЕЛ в интернете хэш-функции SHA-512 для 1С. НИГДЕ!


Зачем искать интернете хэш-функции SHA-512 для 1С? Все уже давно встроено в ОС, и отлично гуглится. В результате за 10 минут вполне можно сделать такое:

Текст = Новый COMОбъект("System.Text.UTF8Encoding");
КриптоSHA512 = Новый COMОбъект("System.Security.Cryptography.SHA512Managed");
Хэш = КриптоSHA512.ComputeHash_2(Текст.GetBytes_4("ололо")).Выгрузить();


На выходе массив байтов.
mystra; mms76; nihfalck; romansun; Diversus; +5 Ответить
9. Diversus 2015 26.02.13 10:40 Сейчас в теме
(8) Пять балов! Где же Вы раньше были?
Честно искал, но ничего путевого не нашел.
Ваше решение красивее. Попробовал, возвращает массив из которого уже не сложно получить строку с хэшем.

Спасибо за второе решение.
10. yukon 78 26.02.13 11:15 Сейчас в теме
(9)

Где же Вы раньше были?


Недалеко :)

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


Требует .Net, но на всех современных машинах он установлен, так что большой проблемой не будет.
Зайдите regedit-ом в HCR\System.Security.Cryptography.xxxxxx там много интересного по теме.
11. Diversus 2015 26.02.13 11:46 Сейчас в теме
(10) Добавил Ваш вариант в статью
22. user853472 24.12.17 01:24 Сейчас в теме
(8) А как этот массив байтов далее преобразовывать? Вот так работает но не всегда))
HTML = Новый COMОбъект("htmlfile");
    HTML.Open("text/html");
    HTML.Write("<script>TransformString = function(x,y){return x.toString(y?y:16)}</script>");
    ЯваСкрипт = HTML.documentElement.document.Script;
    
    Хеш = "";
    Для Каждого Байт Из ХешБайт Цикл
        Символ = ЯваСкрипт.TransformString(Байт);
        Хеш = Хеш + ?(СтрДлина(Символ) = 2, Символ, "0"+Символ);
    КонецЦикла;
Показать


В фоновом запуске вылетает на строке "ЯваСкрипт = HTML.documentElement.document.Script;" с ошибкой получения атрибута Script.

Очень нужно чтобы работало в фоне, в приведенном варианте от автора нет ключа, который можно указать КриптоSHA512.Key
Как сделать чтобы работало в фоновом запуске на файловой версии 1С ?
24. ogidni 153 26.06.19 11:58 Сейчас в теме
Так же есть майнер
(2)
говорю о том, что с помощью такого подхода можно заставить ее и ш

Хеш функция это основа сквозной криптографии. Действительно можно легко и шифровать и дешифровать. А если использовать механизмы Кунингуава можно и RSA расширить
7. akor77 898 26.02.13 07:22 Сейчас в теме
Спасибо, мне как новичку очень интересно. Хорошо бы было выложить подборку полезных скриптов для 1С, например получение путей к рабочему столу, других системных каталогов и т.п.
12. Антон Ширяев 471 13.03.13 12:15 Сейчас в теме
Как-то начал писать статью как нативными средствами 1С получить хеш SHA-1 (на самом деле любой хеш при программировании его алгоритма, функции XOR, Left/Right Rotate и прочие в принципе готовы), но так как совпало со сменой работы бросил и уже год как висит неопубликованной. Смотрю интерес к получению хешей все же есть. Постараюсь дописать и опубликовать статью.
13. DikSer 26.04.13 08:23 Сейчас в теме
Товарищи а как зашифровать по ключу в HMAC-SHA512?
user853472; serg1974; DISc0nNecT; +3 Ответить
21. Serginio 797 02.09.17 21:50 Сейчас в теме
23. user853472 24.12.17 01:38 Сейчас в теме
(21) Доброго времени суток! Если знаете, подскажите пожалуйста, как из

 ХешБайт = Криптография.ComputeHash_2(Текст.GetBytes_4(Запись.Значение)).Выгрузить();


получить хеш для отправки на сервер не используя

HTML = Новый COMОбъект("htmlfile");
HTML.Open("text/html");
HTML.Write("<sc ript>TransformString = function(x,y){return x.toString(y?y:16)}</sc ript>");
ЯваСкрипт = HTML.Script;
	
	Хеш = "";
	Для Каждого Байт Из ХешБайт Цикл
		Символ =  ЯваСкрипт.TransformString(Байт);
		Хеш = Хеш + ?(СтрДлина(Символ) = 2, Символ, "0"+Символ);
	КонецЦикла;
Показать


Так как при фоновом задании вылетает с ошибкой что не найден атрибут "Script"
14. IKSparrow 02.02.15 11:33 Сейчас в теме
Смотрим СП - объект "ХешированиеДанных".
Зачем изобретать велосипед?
15. Diversus 2015 02.02.15 12:22 Сейчас в теме
(14) IKSparrow, этот объект появился в 8.3 статья была создана в 2013 году, когда 8.3 еще была в зародыше и нужно это все было все на платформе 8.2.
Так что там только такие велосипеды и работали :)
16. serg1974 13.01.17 12:42 Сейчас в теме
(14) так ведь там максимум SHA-256 !
jo0506; pbahushevich; +2 Ответить
17. sapser 9 18.08.17 13:18 Сейчас в теме
Здравствуйте!
"возвращает массив из которого уже не сложно получить строку с хэшем"
Подскажите пожалуйста как получить строку с хэшем?
18. xvchk 02.09.17 21:25 Сейчас в теме
(17)

Тоже стакнулся на этой фразе

Попробуй как написано здесь
http://1с-интеграция.рф/useful_links/47/364/
25. ogidni 153 26.06.19 12:00 Сейчас в теме
Голову сломал переписывая этот код на 1С. :-(
26. MuI_I_Ika 667 21.08.19 11:42 Сейчас в теме
27. ogidni 153 21.08.19 12:53 Сейчас в теме
Результат получения открытого ключа btc из приватного?
28. MuI_I_Ika 667 26.08.19 16:33 Сейчас в теме
(27) я ожидал, что в результате переписывания кода получится рабочий код на 1с.
29. ogidni 153 27.08.19 10:55 Сейчас в теме
(28) Я тоже ожидал, что то похожее получил, но есть ньюансы.
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Программист 1С
Нижний Новгород
зарплата от 80 000 руб. до 130 000 руб.
Полный день

Технический лидер, архитектор 1С, руководитель проектов
Санкт-Петербург
зарплата от 150 000 руб.
Полный день

Программист 1С
Москва
зарплата от 150 000 руб. до 250 000 руб.
Полный день

Программист 1С
Москва
зарплата от 150 000 руб. до 180 000 руб.
Полный день

Программист 1С
Москва
зарплата до 160 000 руб.
Полный день