Имя: Пароль:
1C
1С v8
Cформировать строку путем шифрования SHA256
,
0 Котокот
 
29.10.14
08:12
Финансовые методы API Яндекс.Директ, цитата отсюда http://api.yandex.ru/direct/doc/concepts/finance-token.xml
"Параметр finance_token необходимо сформировать путем шифрования SHA256. Шифруется строка, полученная конкатенацией следующих подстрок:..."

Пробую использовать МенеджерКриптогоафии - ругается при попытке установить АлгоритмХеширования равный "SHA-256":
        МенеджерКриптографии = Новый МенеджерКриптографии("Microsoft Enhanced RSA and AES Cryptographic Provider", "", 24);
        МенеджерКриптографии.АлгоритмХеширования        = "SHA-256";

На второй строке падает, говорит, что не знает такого алгоритма, хотя в MSDN написано, что он поддерживается.
К тому же, как я понял, метод Зашифровать(<ИсходныеДанные>, <Получатели>) требует использования сертификатов. А вот в примере шифрования на питоне сертификаты не используются (вроде):
financeToken = hashlib.sha256(masterToken + str(operationNum) + usedMethod + login).hexdigest()

Три вопроса:
1. Обязательно ли использовать сертификат, чтобы зашифровать строку алгоритмом SHA-256?
2. Как все-таки заставить 1С работать с SHA-256 средствами платформы?
3. Ткните в примеры шифрования строки в 1С НЕ средствами платформы.
1 Котокот
 
29.10.14
08:15
ВК использовать не хочется. Как вариант - попробовать запилить на javascript: http://www.webtoolkit.info/javascript-sha256.html#.VFBpgTSsWE0
2 Котокот
 
29.10.14
09:25
Что, никто не знает?
3 Котокот
 
29.10.14
12:11
Опять я впереди планеты всей, похоже. Сделал в итоге на ScriptControl и Javascript, работает стабильно, Директ хэш схавал и не подавился, денежка перечисляется.
4 Зеленый пень
 
29.10.14
12:15
(3) Хвастайся до конца: выкладывай решение.
5 DmitrO
 
29.10.14
12:16
Хеширование = Новый ХешированиеДанных(ХешФункция.SHA256);
Хеширование.Добавить(masterToken + str(operationNum) + usedMethod + login);
financeToken = Строка(Хеширование.ХешСумма);
6 Garikk
 
29.10.14
12:18
(0) не XP случаем?
7 oleg_km
 
29.10.14
12:21
Только вычисление хеша - это не шифрование
8 Котокот
 
29.10.14
12:22
(5) На платформе 8.2.19.90 не работает, не знает такого "ХешированиеДанных"
9 Котокот
 
29.10.14
12:22
(6) На 2008 делал, сейчас на хрюше проверю
10 Котокот
 
29.10.14
13:29
(6) На хрюше тоже пашет

(3) Скрипт взял отсюдова: http://www.webtoolkit.info/javascript-sha256.html#.VFBpgTSsWE0

В коде написал так:

        // Сформируем финансовый токен
        ХэшФинансовогоТокена = Выборка.ТокенЯндексДиректФинансовый + Строка(Выборка.НомерФинансовойОперации) + НазваниеФинансовогоМетода + Выборка.ЛогинЯндексДирект;
        // Получим хэш финансового токена
        ScrptCtrl = новый COMОбъект("MSScriptControl.ScriptControl");
        ScrptCtrl.Language="JScript";
        ScrptCtrl.AddCode(ПолучитьОбщийМакет("КэнДиректСкриптПолученияХешаСтроки").ПолучитьТекст());
        ХэшФинансовогоТокена = ScrptCtrl.Eval("SHA256('" + ХэшФинансовогоТокена + "')");
Основная теорема систематики: Новые системы плодят новые проблемы.