Мазмұнға өту
Tez Base

Бесплатно на Инфостарте

RSA на встроенном языке, а не через .NET

Почти все реализации RSA в 1С зовут .NET через COM. Это работает на машине, где .NET зарегистрирован, и не работает больше нигде.

Обработка бесплатная. Полный разбор того, как это устроено внутри, есть в нашем блоге.

Ограничение всплывает в самый неподходящий момент: на Linux-сервере, в тонком клиенте или на голой Windows без регистрации сборок код просто не идёт. А переписывать интеграцию с платёжным шлюзом в этот момент уже некогда.

Здесь RSA написан целиком на встроенном языке, поэтому тот же код идёт где угодно. Обработка учебная: она показывает принцип на вымышленных данных, а не готовую интеграцию.

Одна кнопка прогоняет весь цикл: номер карты шифруется публичным ключом шлюза, тут же расшифровывается приватным, как это делает шлюз, а тело запроса подписывается.

Что видно по шагам

Публичный ключ шлюза

Пара чисел. В бою его отдаёт шлюз по своему API, в демо встроен учебный ключ на 256 бит: маленький, чтобы считалось за пару секунд.

Шифрование и обратная расшифровка

Видно оба конца цепочки, а не только свою половину. Это и есть учебная ценность: понятно, что именно получит шлюз.

Подпись тела запроса

Вторая половина задачи, про которую обычно вспоминают позже, чем про шифрование.

Что с этим делать дальше

  1. 01

    Посмотреть принцип на демо-данных

    Учебный ключ короткий специально: движок демо хранит числа массивами, и боевую длину ключа он считает заметно дольше. Встроенный тип Число справляется сам: на сервере 1С 8.3.27 возведение в степень по модулю 2048 бит заняло у нас 173 мс.

  2. 02

    Не тащить демо в бой как есть

    Это демонстрация механизма, а не готовый модуль оплаты. Боевая интеграция требует ключей шлюза, обработки ошибок и требований самого шлюза к формату.

Өзіңіз шеше алмай жатырсыз ба? Жазыңыз, бірге қараймыз

WhatsApp-та не шықпай жатқанын жазыңыз: қарап шығып, қалай көмектесе алатынымызды айтамыз.

Рядом по теме

Жиі қойылатын сұрақтар

Можно взять этот код в боевую интеграцию со шлюзом?

В таком виде нет. Демо-ключ 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.

Зачем подпись, если номер карты уже зашифрован?

Это разные задачи. Шифрование прячет номер карты от всех, кроме шлюза. Подпись ничего не прячет, она подтверждает, что запрос собрали вы и по дороге его не подменили. Поэтому шифруется только карта, а подписывается всё тело запроса.

1С жүйеңізге тегін экспресс-аудит

1-2 күнде базаңызды қарап, өнімділік қайда жоғалып жатқанын табамыз және не істеу керегін айтамыз. Міндеттемесіз.

Тегін экспресс-аудит алу

Тапсырманы талқылайық

Ең жылдамы WhatsApp: тапсырма туралы бірер жол жазыңыз, жұмыс күні ішінде жауап береміз.

[email protected]

Өтінімді формамен қалдыру ыңғайлырақ