Имя: Пароль:
1C
1C 7.7
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
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
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
Не на ноуте, а стационарнике.