|
v7: Ищу javascript для создания функции в 1с: Хеш данных HMAC с ключом API и SHA256 | ☑ | ||
---|---|---|---|---|
0
From_RB
22.01.20
✎
19:51
|
Вкратце: делаю отправку смс используя предоставлненное API
Выжимка из доки: Создайте объект HMAC с вашим ключом API и хэш-функцией SHA256 const hmac = crypto.createHmac("sha256", password); Обновите HMAC-объект результирующей строкой hmac.update('messagessinglesms{ "target": "BAMBOOGROUP", "msisdn": "375291234567", "text": "Hello world" }', "utf8") Создайте подпись в формате hex signature = hmac.digest("hex") Буду признателен за подсказку. СПАСИБО. |
|||
1
Garykom
гуру
22.01.20
✎
20:25
|
была тема недавно подобная
|
|||
2
Garykom
гуру
22.01.20
✎
20:27
|
(0) То что у тебя перечислено это нода https://nodejs.org/api/crypto.html
Короче ноду ставишь и пишешь микросервису для чего тебе надо, из 1С 7.7 юзаешь через WinHttp = СоздатьОбъект("WinHttp.WinHttpRequest.5.1") |
|||
3
palsergeich
22.01.20
✎
20:43
|
Можно микросервис на 8ке поднять, она умеет в SHA256, так, как вариант, что бы оставаться в экосистеме 1с
|
|||
4
Garykom
гуру
22.01.20
✎
23:11
|
(3) Для 7.7 проще поднять ноду
|
|||
5
victuan1
24.01.20
✎
07:06
|
(3) Т.е. организовать зоопарк ПО?
|
|||
6
From_RB
24.01.20
✎
07:42
|
Нашел что то похожее hmac-sha256.js. Копаю дальше.
Попутно вопрос: Можно ли каким то образом во вставке кода js через MSScriptControl.ScriptControl указать ссылку (src=""http...) на внешний js файл и уже потом задействовать функции объектов этих? |
|||
7
Garykom
гуру
24.01.20
✎
07:47
|
(6) ЭЭэ не уверен что js код от ноды или браузера точно можно в MSScriptControl
|
|||
8
Garykom
гуру
24.01.20
✎
07:48
|
(7)+ Это примерно как код от 1С 8 пытаться в 1С 7.7
|
|||
9
DeMi4
24.01.20
✎
08:02
|
Бился я с этой фигней. В итоге написал скрипт на питоне с использованием библиотеки PyJWS / PyJWT classes весь скрипт 5 строчек кода.
|
|||
10
DeMi4
24.01.20
✎
08:04
|
Тоже для 7.7 надо было. Настройки берет из файла питоновский скрипт выдает в другой файл хэш.
|
|||
11
Garykom
гуру
24.01.20
✎
08:10
|
Не проще https://github.com/nexe/nexe
|
|||
12
DeMi4
24.01.20
✎
08:13
|
Возможно. hmac-sha256 попроще. У меня была задача hmac-rs256 с использованием самоподписанного сертификата.
|
|||
13
Garykom
гуру
24.01.20
✎
08:43
|
Самое простое и банальное для 77 это сделать консольную утилиту на чем угодно и юзать её
На чем делать зависит от фантазии |
|||
14
Сияющий в темноте
24.01.20
✎
08:52
|
у меня есть sha256 на vbscript и к нему сборщик программного кода на метаязыке
можно заставить его собрать программный код на javascript. |
|||
15
Сияющий в темноте
24.01.20
✎
08:53
|
(13)у меня md5 и sha в семерке работали через mssctipt control.
|
|||
16
Сияющий в темноте
24.01.20
✎
08:54
|
если не забуду,вечером вышлю
но он строки в utf8 переводит перед обработкой,так как стандарт был таеой. |
|||
17
From_RB
24.01.20
✎
10:50
|
(16) Спасиб. Буду весьма признателен.
|
|||
18
From_RB
25.01.20
✎
08:27
|
Up
|
|||
19
dmitryds
25.01.20
✎
09:51
|
наверное оно
Cформировать строку путем шифрования SHA256 |
|||
20
Конструктор1С
25.01.20
✎
13:05
|
||||
21
From_RB
26.01.20
✎
09:28
|
Вопрос решен. Нашел решение как вызвать в 7ке: HashedData = Новый COMОбъект("CAdESCOM.HashedData") ?
//Если кому интересно: Функция ВычислитьHMAC(key,стр) врап=СоздатьОбъект("NetObjectToIDispatch45"); врап.УстЭтоСемерка(); encoding=Врап.ПолучитьТип("System.Text.Encoding").UTF8; keyByte = encoding.GetBytes(key); hmacsha256 = Врап.СоздатьОбъект("System.Security.Cryptography.HMACSHA256",keyByte); messageBytes = encoding.GetBytes(стр); hashmessage = hmacsha256.ComputeHash(messageBytes); BitConverter=Врап.ПолучитьТип("System.BitConverter"); Strhashmessage=Нрег(СтрЗаменить(BitConverter.ToString(hashmessage),"-","")); Возврат Strhashmessage КонецФункции |
|||
22
trdm
26.01.20
✎
10:12
|
(21) оверхед получишь. надо проще.
|
|||
23
From_RB
26.01.20
✎
10:14
|
(22) Как проще?
|
|||
24
Garykom
гуру
26.01.20
✎
17:09
|
(21) Ну ты же понимаешь что решение через ВК от Сергея Смирнова и .Net не сильно лучше чем предложенный мной вариант с Node.js?
К тому же менее универсальный ибо только под винду, а нода она на чем угодно пашет и можно в сетке развернуть и даже через инет по http. |
|||
25
From_RB
26.01.20
✎
18:28
|
(24) Увы под "чистый" javascript чз MSScriptControl.ScriptControl не "дожал"(
>>ибо только под винду для 7.7))) |
|||
26
Garykom
гуру
26.01.20
✎
18:45
|
(25) Есть NW.js который может упаковать код на js (под nodejs) в exe.
Тебе один хрен dll в виде ВК для 1С тащить ("NetObjectToIDispatch45"), так не проще притащить ноду? Ну или на языке 1С 7.7 берешь ссылку из (20) и ваяешь свое, с бинарными строками можно через Симв() и КодСимв() работать и обычные строки. |
|||
27
Garykom
гуру
26.01.20
✎
18:46
|
Лично я сейчас предпочитаю на чем угодно делать или консольные приложения или веб-приложения (веб-сервер по сути) которые можно на любом компе в сети запустить.
А затем из любой 1С юзать через СоздатьОбъект("WinHttp.WinHttpRequest.5.1") для 1С 7.7 |
|||
28
dmitryds
26.01.20
✎
20:33
|
(26) Зачем так усложнять? На Ноде 10 строк кода для API... запускается node index.js
Но решение из (19) еще проще ХэшФинансовогоТокена = Выборка.ТокенЯндексДиректФинансовый + Строка(Выборка.НомерФинансовойОперации) + НазваниеФинансовогоМетода + Выборка.ЛогинЯндексДирект; // Получим хэш финансового токена ScrptCtrl = новый COMОбъект("MSScriptControl.ScriptControl"); ScrptCtrl.Language="JScript"; ScrptCtrl.AddCode(ПолучитьОбщийМакет("КэнДиректСкриптПолученияХешаСтроки").ПолучитьТекст()); ХэшФинансовогоТокена = ScrptCtrl.Eval("SHA256('" + ХэшФинансовогоТокена + "')"); |
|||
29
dmitryds
26.01.20
✎
20:34
|
ScrptCtrl.AddCode(ПолучитьОбщийМакет("КэнДиректСкриптПолученияХешаСтроки").ПолучитьТекст());
Тут подгружается текст из http://www.webtoolkit.info/javascript-sha256.html#.VFBpgTSsWE0 |
|||
30
trdm
26.01.20
✎
20:48
|
(23) > Как проще?
да как обычно, хочешь скорость и меньше оверхеда - надо "опускаться" по уровню языка. от .Net к с++ от с++ к си. |
|||
31
trdm
26.01.20
✎
20:54
|
можно копнуть тут:
https://github.com/search?utf8=%E2%9C%93&q=SHA256&type= и завернуть во внешнюю компоненту. |
|||
32
Garykom
гуру
26.01.20
✎
20:55
|
(28) (29) Один хрен тянете откуда то (из макета у тя) код для выполнения в стороннем интерпретаторе
Так что https://github.com/danharper/hmac-examples взял бы golang или C#/.Net и тупо в консольную утилиту |
|||
33
Garykom
гуру
26.01.20
✎
20:58
|
(31) Куча примеров на разных в (32)
Жаль я пока не допилил свое создание ВК для 1С на Golang, все нет времени сделать без прокладки на C++. |
|||
34
Garykom
гуру
26.01.20
✎
21:06
|
Я кстати реально не пойму почему уже разрабы платформы 1С не сделают cdecl для вызова обычных DLL на чем угодно, вместо ваяния ВК по их стандарту.
Да есть готовые ВК для подключения сторонних DLL но это блин оверхед. |
|||
35
trdm
26.01.20
✎
21:27
|
(33) голанг не работает на Win XP.
По этому и выбран с++, что-бы была совместимость вниз. |
|||
36
trdm
26.01.20
✎
21:29
|
следовать новизне - это риск инвестиции.
Надо яйца по нескольким корзинам раскладывать. |
|||
37
Garykom
гуру
26.01.20
✎
21:46
|
(35) 1. Ну насчет не работает это сильно сказано https://stackoverflow.com/questions/52137098/go-after-1-10-and-support-of-windows-xp
Просто поддержка кончилась и могут быть глюки. И старые версии Go никуда не делись. 2. Я реально не понимаю зачем нынче WinXP и более древние, сча есть дешевые железки на которых вполне можно Win7 хотя бы или даже Win10. Лично я WinXP уже давно не ставлю и не сталкивался, минимум Win7 везде. |
|||
38
trdm
26.01.20
✎
22:35
|
(37) XP - это довольно стабильное легаси. для некоторых конфигураций лучше остальных ос.
|
|||
39
trdm
26.01.20
✎
22:37
|
тем более оно отлично работает на стабильных жестких дисках, а начиная с 7-ки нужен ссд для нормалой работы. мс разучились быстрый софт делать.
|
|||
40
Garykom
гуру
26.01.20
✎
22:40
|
(38) (39) Сча уже от Win7 пора отказываться, я новые только Win10 ставлю если железо по дровам позволяет.
WinXP это уже не легаси а раритет как Win98 менять пока не поздно. Любая железка из строя выходит и что делать? Замену сча хрен найдешь уже, все новое железо оно под 10-ку. |
|||
41
trdm
26.01.20
✎
22:57
|
плевать я хотел на майкрософтовскую лапшу, что мне подходит, то я и выберу.
троянские оси типа 10 буду ставить только под растрелом. |
|||
42
Garykom
гуру
26.01.20
✎
23:19
|
(41) Не видел не одной железки бытовой которая больше 20 лет проработала.
Обычно через 10-15 лет вылетает, короче один хрен перейти придется на 10 или "20" не сейчас, так лет через 5-10. |
|||
43
Garykom
гуру
26.01.20
✎
23:20
|
(42)+ Под железкой подразумеваю ноут или мамку.
|
|||
44
trdm
27.01.20
✎
09:21
|
(43) Да, на новом ноуте мамка сдохла через неделю.
есть подозрение, что при монтаже курера повредили, слишком много усилий для монтажа нужно. |
|||
45
trdm
27.01.20
✎
09:22
|
Не на ноуте, а стационарнике.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |