#0
by sintez1234
Стоит задача, зашифровать строку, передаваемую на сервер тремя алгоритмами. Маюсь давно уже, 2 алгоритма из трех реализовал уже. Надо зашифровать и подписать через SHA1, SHA515 и Base64 Во всем мне помогает PHP-сырцы, где уже все есть. Мне надо с PHP перевести на 1С, чтобы больше не нужно было ставить на ПК юзеров PHP-сервер. Остался самый последний штрих! Многомесячной работы! :) Последняя проблема! В PHP такая строка: И это работает. В 1С у меня уже попадают правильные $accessKey и $hash. Я пробую вот так, но это не работает, возращает вообще пустую строку, 1С-код: Как видим, параметр Base64Строка принимает только один, потому и не работает. Пробовал уже через запятую ей второй вставить - ругается так: Слишком много фактических параметров (Base64Строка) В синтакс-помошнике так: Глобальный контекст (Global context) Base64Строка (Base64String) Синтаксис: Base64Строка(<Значение>) Параметры: Тип: ДвоичныеДанные. Двоичные данные, которые необходимо закодировать по алгоритму base64. Т.е. сразу видно что проблемы как минимум две: 1) У меня строка, а функция Base64Строка принимает ДвоичныеДанные. Как переделать строку в двоичные данные средствами 1с я не знаю. 2) Во-вторых, сильно я сомневаюсь что без ключа вообще получится правильный результат, а ключ функция не принимает в принципе. С двумя другими алгоритмами шифрования задовница была еще больше, средствами чисто 1с никак, использовал виндовые библиотеки. Видимо с Base64 придется поступить похожим образом. Возможно нужно написать похожую на эту функцию. Я нашел в реестре что-то похожее на нужное. Есть вот эти две интересны штуки: Из названия понятно что они делают. Как юзать не понятно, примут ли они ключ, тоже не понятно. Короче была у меня мечта сегодня закончить многомесячный труд, но видимо не сбыться ей :(
#5
by sintez1234
эта штука подключается к биржам, и фигачит там сделки. Да, на голой 1С без приблуд. Сейчас только PHP-сервер иногда юзаем, но вот-вот и он станет не нужен. Биржевые боты на 1с, страшное изощрение, но работает.
#6
by sintez1234
биржи принимают только вот так зашифрованные запросы. Т.е. неадекватного начальства тут нет. Это реально надо :(
#7
by sintez1234
Нагуглил только одну тему по теме во всем рунете :( Вот Полистал и помереть хочется :(
#8
by sintez1234
БЛИИИИИИИИИИИИН!!! )))))))))) Так там не надо ключа то!!! Это жо строка голимая! base64_encode($accessKey.':'. $hash), Это одна строка там! Типа такая: Строка = "123123:d-9g08df08gdf98gd9f8g";
#9
by sintez1234
Тогда остается другой вопрос, как теперь преобразовать обычную строку в ДвоичныеДанные 1С? Ведь Base64Строка принимает только их, строки не понимает.
#17
by sintez1234
не, что-то не так. Строка очень похожая, но отличается от того что выдает PHP, разбираюсь почему, может в другом совсем ошибка.
#18
by sintez1234
опаньки! :) Строка которую PHP дает, то что надо: ZWMyYjVjMmQtZjhkMS00ZTRmLWFiMDMtMDBmYWI4MjA0NzU4OjRjYzkxMmNkMmJkMThjNDUzYTRiNWMxNmY4OGFjNzFhNzg0NGQzNjY= Строка которую дает твой код: 77u/ZWMyYjVjMmQtZjhkMS00ZTRmLWFiMDMtMDBmYWI4MjA0NzU4OjRjYzkxMmNk MmJkMThjNDUzYTRiNWMxNmY4OGFjNzFhNzg0NGQzNjY= Как видим разница только в том, что в начале 4 символа, которые можно просто обрезать функцией Прав. Напишу скоро получилось ли всё как надо :)
#19
by sintez1234
Жесть.... Сервер: 401 Unauthorized - invalid hash length Ладно хоть Base64 строчка теперь правильная есть. Буду дальше курить что опять серверу не нравится, че у него длинное там опять. Тебе спасибо огромное :)
#20
by sintez1234
Оказалось что итоговая строка не только содержит 4 не нужных мне символа в начале, но и почему то есть символ перевода строки. Я его убрал так: Ругань на длинну исчезла. Теперь новая ошибка :) Ну ладно, прогресс то есть, когда-нибудь ошибки закончатся... может даже в этом году ) Во что пишет, фиг знает что надо: Request unsuccessful. Incapsula incident ID: 0-82421556293668197
#22
by Torquader
Строка должна иметь кодировку. в php все строки однобайтовые, но символы кодируются через UTF-8, а в 1С 8.Х строки двухбайтовые. Соответственно, получается, что для Base64 строки будут совершенно разные. Если уж очень-очень хочется победить, тем более, что символы в ключе и Hash наверняка латинские, то можно написать преобразование в Base64 самому. Или посмотреть, как она коверкает двухбайтовые символы и "выкусить" старший байт.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
В этой группе 1С
- КД 2.0 перенос движений документа "регламентная операция"
- Использование внешнего источника данных в запросе
- RLS к реквизитам (ресурсам, измерениям) в регистрах расчета
- Как в запросе проверить на незаполненное значение поле типа "ДокументСсылка"
- Где хранятся пользовательские настройки компоновки данных
- Возможно ли изменить ГУИД у элемента справочника?
- Группировка данных в СКД на примере
- Передача Enumeration (VB) через 1c (8.2) (COM Соединение)
- поменять пароль администратора на компе в другом домене
- Программа не видит процедуру внутри команды печати
- Как вывести сообщение пользователю при выполнении регламентного задания в 8.3
- Передача параметров в процедуру и отказ от модальности
- Проблема с SQL базой после обновления
- Коммутатор на 30-48 портов
- Как создать одну номенклатуру в разных группах?
- Кто-нибудь видел интеграцию Viber с 1С?
- В чем смысл регистра Взаиморасчеты по документам расчета в УПП?
- Ежедневная рассылка отчета из 1С на почту
- УТ11. Чек ККМ. Где при продаже устанавливается цена НДС?
- Как узнать список и содержимое таблиц 1С в MS SQL