Бесплатно на Инфостарте
RSA на встроенном языке, а не через .NET
Почти все реализации RSA в 1С зовут .NET через COM. Это работает на машине, где .NET зарегистрирован, и не работает больше нигде.
Обработка бесплатная. Полный разбор того, как это устроено внутри, есть в нашем блоге.
Ограничение всплывает в самый неподходящий момент: на Linux-сервере, в тонком клиенте или на голой Windows без регистрации сборок код просто не идёт. А переписывать интеграцию с платёжным шлюзом в этот момент уже некогда.
Здесь RSA написан целиком на встроенном языке, поэтому тот же код идёт где угодно. Обработка учебная: она показывает принцип на вымышленных данных, а не готовую интеграцию.
Одна кнопка прогоняет весь цикл: номер карты шифруется публичным ключом шлюза, тут же расшифровывается приватным, как это делает шлюз, а тело запроса подписывается.
Что видно по шагам
Публичный ключ шлюза
Пара чисел. В бою его отдаёт шлюз по своему API, в демо встроен учебный ключ на 256 бит: маленький, чтобы считалось за пару секунд.
Шифрование и обратная расшифровка
Видно оба конца цепочки, а не только свою половину. Это и есть учебная ценность: понятно, что именно получит шлюз.
Подпись тела запроса
Вторая половина задачи, про которую обычно вспоминают позже, чем про шифрование.
Что с этим делать дальше
- 01
Посмотреть принцип на демо-данных
Учебный ключ короткий специально: движок демо хранит числа массивами, и боевую длину ключа он считает заметно дольше. Встроенный тип Число справляется сам: на сервере 1С 8.3.27 возведение в степень по модулю 2048 бит заняло у нас 173 мс.
- 02
Не тащить демо в бой как есть
Это демонстрация механизма, а не готовый модуль оплаты. Боевая интеграция требует ключей шлюза, обработки ошибок и требований самого шлюза к формату.
O'zingiz hal qila olmayapsizmi? Yozing, birga ko'ramiz
WhatsApp orqali nima chiqmayotganini yozing: ko'rib chiqamiz va qanday yordam bera olishimizni aytamiz.
Mavzu boyicha tahlillar
Рядом по теме
Локальная LLM на встроенном языке 1С
Ещё одна вещь, которую принято считать невозможной без компонент: трансформер на чистом BSL, который отвечает и учится в форме.
Бенчмарк: код 1С против внешней компоненты
Где встроенный язык упирается в потолок и компонента на C++ выигрывает, а где проигрывает: 31 задача на вашем сервере.
Ko'p so'raladigan savollar
Можно взять этот код в боевую интеграцию со шлюзом?
В таком виде нет. Демо-ключ 256 бит взят ради скорости, в бою нужен минимум 2048, и паддинга PKCS#1, обязательного в проде, здесь нет. Публичный ключ в демо встроен, а настоящая интеграция получает его от шлюза и отдельно обрабатывает ошибки платёжного API.
Что нужно для запуска?
Платформа 8.3.14 и выше, управляемое приложение, конфигурация любая. COM, .NET и внешние компоненты не нужны, код идёт и в веб-клиенте, и с сервером на Linux. Версии для обычного приложения нет.
Обработка пишет что-то в базу или ходит в сеть?
Нет. Она ничего не читает из базы и не пишет в неё, сетевых вызовов не делает. Публичный и приватный ключи в демо свои, чтобы показать обе стороны обмена сразу. Код открыт.
Насколько быстро считает обработка?
Движок демо хранит числа массивами кусочков: ключ 256 бит расшифровывается около 3 секунд, 512 бит уже под 25. Встроенный тип Число считает быстрее: на сервере 1С 8.3.27 возведение в степень по модулю 2048 бит заняло у нас 173 мс, шифрование с экспонентой 65537 около 1 мс.
Как проверено, что шифрование считается верно?
Тот же шифртекст независимо посчитан на арифметике больших чисел BigInt и совпал байт в байт по всем тестовым входам, включая кириллицу. Учебный вектор тоже проходит: при n=3233, e=17, d=413 число 65 шифруется в 2790 и расшифровывается обратно в 65.
Зачем подпись, если номер карты уже зашифрован?
Это разные задачи. Шифрование прячет номер карты от всех, кроме шлюза. Подпись ничего не прячет, она подтверждает, что запрос собрали вы и по дороге его не подменили. Поэтому шифруется только карта, а подписывается всё тело запроса.
1C tizimingiz uchun bepul ekspress-audit
1-2 kun ichida bazangizni ko'rib chiqamiz, unumdorlik qayerda yo'qolayotganini topamiz va nima qilish kerakligini aytamiz. Majburiyatsiz.
Vazifani muhokama qilamiz
Eng tezi WhatsApp: vazifa haqida bir-ikki qator yozing, ish kuni davomida javob beramiz.