Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 7.7 и ранее

v7: Ищу javascript для создания функции в 1с: Хеш данных HMAC с ключом API и SHA256

v7: Ищу javascript для создания функции в 1с: Хеш данных HMAC с  ключом  API и SHA256
Я
   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")

Буду признателен за подсказку. СПАСИБО.
 
 
   Garykom
 
1 - 22.01.20 - 20:25
была тема недавно подобная
   Garykom
 
2 - 22.01.20 - 20:27
(0) То что у тебя перечислено это нода https://nodejs.org/api/crypto.html
Короче ноду ставишь и пишешь микросервису для чего тебе надо, из 1С 7.7 юзаешь через WinHttp = СоздатьОбъект("WinHttp.WinHttpRequest.5.1")
   palsergeich
 
3 - 22.01.20 - 20:43
Можно микросервис на 8ке поднять, она умеет в SHA256, так, как вариант, что бы оставаться в экосистеме 1с
   Garykom
 
4 - 22.01.20 - 23:11
(3) Для 7.7 проще поднять ноду
   victuan1
 
5 - 24.01.20 - 07:06
(3) Т.е. организовать зоопарк ПО?
   From_RB
 
6 - 24.01.20 - 07:42
Нашел что то похожее hmac-sha256.js. Копаю дальше.

Попутно вопрос:
Можно ли каким то образом во вставке кода js через MSScriptControl.ScriptControl
указать ссылку (src=""http...) на внешний  js файл и уже потом задействовать функции объектов этих?
   Garykom
 
7 - 24.01.20 - 07:47
(6) ЭЭэ не уверен что js код от ноды или браузера точно можно в MSScriptControl
   Garykom
 
8 - 24.01.20 - 07:48
(7)+ Это примерно как код от 1С 8 пытаться в 1С 7.7
   DeMi4
 
9 - 24.01.20 - 08:02
Бился я с этой фигней. В итоге написал скрипт на питоне с использованием библиотеки PyJWS / PyJWT classes весь скрипт 5 строчек кода.
   DeMi4
 
10 - 24.01.20 - 08:04
Тоже для 7.7 надо было. Настройки берет из файла питоновский скрипт выдает в другой файл хэш.
   Garykom
 
11 - 24.01.20 - 08:10
   DeMi4
 
12 - 24.01.20 - 08:13
Возможно. hmac-sha256 попроще. У меня была задача hmac-rs256 с использованием самоподписанного сертификата.
   Garykom
 
13 - 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 переводит перед обработкой,так как стандарт был таеой.
   From_RB
 
17 - 24.01.20 - 10:50
(16) Спасиб. Буду весьма признателен.
   From_RB
 
18 - 25.01.20 - 08:27
Up
   dmitryds
 
19 - 25.01.20 - 09:51
   Конструктор1С
 
20 - 25.01.20 - 13:05
   From_RB
 
21 - 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            
    
КонецФункции
   trdm
 
22 - 26.01.20 - 10:12
(21) оверхед получишь. надо проще.
   From_RB
 
23 - 26.01.20 - 10:14
(22) Как проще?
   Garykom
 
24 - 26.01.20 - 17:09
(21) Ну ты же понимаешь что решение через ВК от Сергея Смирнова и .Net не сильно лучше чем предложенный мной вариант с Node.js?

К тому же менее универсальный ибо только под винду, а нода она на чем угодно пашет и можно в сетке развернуть и даже через инет по http.
   From_RB
 
25 - 26.01.20 - 18:28
(24) Увы под "чистый" javascript чз MSScriptControl.ScriptControl не "дожал"(
>>ибо только под винду 
для 7.7)))
   Garykom
 
26 - 26.01.20 - 18:45
(25) Есть NW.js который может упаковать код на js (под nodejs) в exe.
Тебе один хрен dll в виде ВК для 1С тащить ("NetObjectToIDispatch45"), так не проще притащить ноду?

Ну или на языке 1С 7.7 берешь ссылку из (20) и ваяешь свое, с бинарными строками можно через Симв() и КодСимв() работать и обычные строки.
   Garykom
 
27 - 26.01.20 - 18:46
Лично я сейчас предпочитаю на чем угодно делать или консольные приложения или веб-приложения (веб-сервер по сути) которые можно на любом компе в сети запустить.
А затем из любой 1С юзать через СоздатьОбъект("WinHttp.WinHttpRequest.5.1") для 1С 7.7
   dmitryds
 
28 - 26.01.20 - 20:33
(26) Зачем так усложнять? На Ноде 10 строк кода для API... запускается node index.js

Но решение из (19) еще проще


ХэшФинансовогоТокена = Выборка.ТокенЯндексДиректФинансовый + Строка(Выборка.НомерФинансовойОперации) + НазваниеФинансовогоМетода + Выборка.ЛогинЯндексДирект;
        // Получим хэш финансового токена


        ScrptCtrl = новый COMОбъект("MSScriptControl.ScriptControl");
        ScrptCtrl.Language="JScript"; 
        ScrptCtrl.AddCode(ПолучитьОбщийМакет("КэнДиректСкриптПолученияХешаСтроки").ПолучитьТекст());
        ХэшФинансовогоТокена = ScrptCtrl.Eval("SHA256('" + ХэшФинансовогоТокена + "')");
   dmitryds
 
29 - 26.01.20 - 20:34
ScrptCtrl.AddCode(ПолучитьОбщийМакет("КэнДиректСкриптПолученияХешаСтроки").ПолучитьТекст());
Тут подгружается текст из 

http://www.webtoolkit.info/javascript-sha256.html#.VFBpgTSsWE0
   trdm
 
30 - 26.01.20 - 20:48
(23) > Как проще?

да как обычно, хочешь скорость и меньше оверхеда - надо "опускаться" по уровню языка.
от .Net к с++ от с++ к си.
 
 Рекламное место пустует
   trdm
 
31 - 26.01.20 - 20:54
можно копнуть тут:
https://github.com/search?utf8=%E2%9C%93&q=SHA256&type=
и завернуть во внешнюю компоненту.
   Garykom
 
32 - 26.01.20 - 20:55
(28) (29) Один хрен тянете откуда то (из макета у тя) код для выполнения в стороннем интерпретаторе

Так что https://github.com/danharper/hmac-examples взял бы golang или C#/.Net и тупо в консольную утилиту
   Garykom
 
33 - 26.01.20 - 20:58
(31) Куча примеров на разных в (32)
Жаль я пока не допилил свое создание ВК для 1С на Golang, все нет времени сделать без прокладки на C++.
   Garykom
 
34 - 26.01.20 - 21:06
Я кстати реально не пойму почему уже разрабы платформы 1С не сделают cdecl для вызова обычных DLL на чем угодно, вместо ваяния ВК по их стандарту.
Да есть готовые ВК для подключения сторонних DLL но это блин оверхед.
   trdm
 
35 - 26.01.20 - 21:27
(33) голанг не работает на Win XP.
По этому и выбран с++, что-бы была совместимость вниз.
   trdm
 
36 - 26.01.20 - 21:29
следовать новизне - это риск инвестиции.
Надо яйца по нескольким корзинам раскладывать.
   Garykom
 
37 - 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 везде.
   trdm
 
38 - 26.01.20 - 22:35
(37) XP - это довольно стабильное легаси. для некоторых конфигураций лучше остальных ос.
   trdm
 
39 - 26.01.20 - 22:37
тем более оно отлично работает на стабильных жестких дисках, а начиная с 7-ки нужен ссд для нормалой работы. мс разучились быстрый софт делать.
   Garykom
 
40 - 26.01.20 - 22:40
(38) (39) Сча уже от Win7 пора отказываться, я новые только Win10 ставлю если железо по дровам позволяет.
WinXP это уже не легаси а раритет как Win98 менять пока не поздно.

Любая железка из строя выходит и что делать? Замену сча хрен найдешь уже, все новое железо оно под 10-ку.
   trdm
 
41 - 26.01.20 - 22:57
плевать я хотел на майкрософтовскую лапшу, что мне подходит, то я и выберу.
троянские оси типа 10 буду ставить только под растрелом.
   Garykom
 
42 - 26.01.20 - 23:19
(41) Не видел не одной железки бытовой которая больше 20 лет проработала.
Обычно через 10-15 лет вылетает, короче один хрен перейти придется на 10 или "20" не сейчас, так лет через 5-10.
   Garykom
 
43 - 26.01.20 - 23:20
(42)+ Под железкой подразумеваю ноут или мамку.
   trdm
 
44 - 27.01.20 - 09:21
(43) Да, на новом ноуте мамка сдохла через неделю.
есть подозрение, что при монтаже курера повредили, слишком много усилий для монтажа нужно.
   trdm
 
45 - 27.01.20 - 09:22
Не на ноуте, а стационарнике.


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.