Нативный RSA в 1С: демо шифрования карты для платёжного шлюза (без COM и .NET)

07.08.26

Разработка - Защита ПО и шифрование

Учебная обработка показывает, как 1С шифрует номер карты публичным ключом RSA перед отправкой в платёжный шлюз и подписывает тело запроса - на чистом встроенном языке, без COM, .NET и внешних компонент. Почти все реализации RSA в 1С зовут .NET через COM, а он требует регистрации сборки и не работает на Linux и в тонком клиенте. Здесь RSA написан целиком на BSL: длинная арифметика, деление Кнута, возведение в степень по модулю. Корректность сверена с эталоном на больших числах байт в байт. Демо-ключ 256 бит, всё локально, одной кнопкой. Код открыт.

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Демо: нативный RSA (шифрование карты для платёжного шлюза)
.epf 13,87Kb
0 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

Учебная обработка: показывает, как 1С шифрует данные карты перед отправкой в платёжный шлюз - на чистом встроенном языке, без COM, .NET и внешних компонент. Номер карты шифруется публичным ключом шлюза, тут же расшифровывается приватным (так делает шлюз), а тело запроса подписывается. Всё на вымышленных данных, одной кнопкой.

Главное отличие от того, что уже лежит на площадке. Почти все реализации RSA в 1С зовут RSACryptoServiceProvider из .NET через COM. Это работает на машине, где .NET зарегистрирован для COM (regasm), и не работает больше нигде: ни на Linux-сервере, ни в тонком клиенте, ни на голой Windows без регистрации. Здесь RSA написан целиком на BSL, поэтому тот же код идёт где угодно.

 

Что показывает

Одна кнопка «Показать принцип» прогоняет весь цикл и заполняет поля по шагам:

  1. Публичный ключ шлюза (пара N, E). В бою его отдаёт шлюз по своему API; в демо встроен учебный ключ на 256 бит - маленький, чтобы считалось за пару секунд.
  2. Шифрование номера карты публичным ключом - возведение в степень E по модулю N.
  3. Шифртекст в base64 - только он ушёл бы в шлюз, сырого номера карты в запросе нет.
  4. Расшифровка приватным ключом (так делает шлюз, у которого есть закрытая часть). Совпадение с исходным доказывает, что асимметрия работает, и всё это без единого сетевого вызова.
  5. Подпись запроса: SHA256(base64(тело) + ключ проекта). Тоже нативно, без COM.

 

Как устроено ядро

RSA - это возведение в степень по модулю над очень большими числами, а нативного длинного целого в 1С нет. Поэтому число хранится массивом «лимбов» по основанию 106, а поверх собрана арифметика:

  • сложение, вычитание, сравнение - «в столбик»;
  • умножение больших чисел - школьный столбик;
  • остаток от деления - алгоритм Кнута (нормализация, оценка частного, коррекция);
  • возведение в степень по модулю - square-and-multiply.

Скорость - отдельная история. Первая версия считала модульное умножение через сдвиг-и-сложение, и расшифровка занимала 25 секунд. Переход на умножение с делением Кнута дал ускорение примерно в 8 раз: демо-ключ 256 бит расшифровывается за пару секунд.

 

Сверено с эталоном

Корректность проверена не только тем, что расшифровка совпадает с исходным. Тот же шифртекст независимо посчитан реализацией на арифметике больших чисел (BigInt) - и совпал байт в байт по всем тестовым входам, включая кириллицу. Плюс классический учебный вектор RSA: n=3233, e=17, d=413, число 65 шифруется в 2790 и расшифровывается обратно в 65.

 

Требования

  • Платформа 8.3.14 и выше, управляемое приложение.
  • Больше ничего. Ни COM, ни .NET, ни внешних компонент. Работает и на Linux-сервере, и в тонком клиенте, и в веб-клиенте.
  • Ничего не читает и не пишет в базу, сети не касается: демо полностью локальное.
  • Код открыт.

 

Что это и что нет

Это учебная демонстрация принципа, а не готовый модуль интеграции и не боевая криптобиблиотека. Сознательно упрощено, чтобы не заслонять суть:

  • ключ 256 бит - для скорости и наглядности; в бою минимум 2048;
  • без PKCS#1-паддинга - показываем математику RSA; в проде паддинг обязателен;
  • публичный ключ в демо встроен; настоящая интеграция получает его от шлюза, хранит секреты в защищённом месте и обрабатывает ошибки платёжного API.

Полный разбор - почему в 1С без больших чисел это всё-таки собирается, как работает деление Кнута и почему COM-путь не годится для распространяемого кода - в бесплатной статье-спутнике «Как написать RSA на встроенном языке 1С».

 

Другие мои инструменты

Криптография на чистом BSL:

  • Аудит паролей СУБД - AES-128-CBC на встроенном языке, читает пароль пользователя СУБД из файла кластера 1CV8Clst.lst.

1С и нейросети:

Диагностика производительности:

Проверено на следующих конфигурациях и релизах:

  • Розница, редакция 2.3, релизы 2.3.25.23

Вступайте в нашу телеграмм-группу Инфостарт

RSA шифрование криптография COM .NET платёжный шлюз эквайринг base64 SHA256 большие числа деление Кнута возведение в степень по модулю встроенный язык 1С нативно демо

См. также

Защита ПО и шифрование Программист Бесплатно (free)

Платёжный шлюз принимает номер карты только зашифрованным по RSA, а почти все реализации RSA в 1С зовут .NET через COM - и это молча ломается на Linux-сервере, в тонком клиенте и на голой Windows без regasm. Разбираю, как написать RSA целиком на встроенном языке: как хранить большие числа лимбами по основанию миллион, откуда берётся деление Кнута и square-and-multiply, почему первая версия считала 25 секунд и как это ускорилось в 8 раз. С проверкой байт в байт против внешнего эталона на больших числах.

вчера в 16:00    129    nedomolkov.ivan    1    

1

Защита ПО и шифрование Программист 1С:Предприятие 8 Бесплатно (free)

Платформенная защита модулей конфигураций, внешних обработок и расширений 1С легко «взламывается» общедоступными декомпиляторами, а использование СЛК (Система лицензирования и защиты конфигураций) часто избыточно из-за необходимости установки дополнительного ПО и покупки ключей. Рассмотрим использование методики защиты логики через обфускацию байт-кода, а именно частный случай использования метода, который позволит привязать решение к «железу» пользователя без использования внешних компонент и онлайн-активации.

19.02.2026    3124    1c-izh    9    

9

Защита ПО и шифрование Программист Бухгалтер Пользователь 1С:Предприятие 8 Россия Абонемент ($m)

Обработка для подписи с помощью сертификата (ЭЦП) произвольных файлов, средствами платформы 1С.

5 стартмани

19.06.2025    2185    3    krundel    2    

0

Защита ПО и шифрование 1С:Предприятие 8 Абонемент ($m)

Как спрятать свои секретные файлы от глаз любого? Всё просто, прячем все свои файлы (видео. документы, архивы, фото, да вообще любые файлы) в картинку или фото. Картинка при этом остается такой же красочной и визуально не изменившейся (лишь подрастет её вес). Стало интересно? Посмотри, как это делается, на скриншотах, если лень читать описание.

1 стартмани

03.06.2025    2479    user1195929    13    

4

Защита ПО и шифрование Программист 1С:Предприятие 8 Абонемент ($m)

Статья посвящена практическому применению XOR-шифрования в среде 1С:Предприятие. Рассматривается теоретическая основа операции XOR, её особенности как метода шифрования, а также преимущества и недостатки в контексте защиты данных. Подробно описываются методы реализации XOR-шифрования и дешифрования на языке 1С, включая примеры кода и практические сценарии использования, такие как шифрование паролей, защита конфиденциальных данных в файлах и передача зашифрованной информации между системами. Обсуждаются аспекты безопасности, выбор ключей, а также интеграция с другими механизмами защиты данных в 1С. Статья ориентирована на разработчиков 1С, стремящихся повысить уровень защиты информации в своих решениях.

1 стартмани

09.04.2025    4069    user1195929    6    

4

Защита ПО и шифрование Программист 1С:Предприятие 8 Россия Абонемент ($m)

Обработки, в которых реализованы алгоритмы шифрования ГОСТ 34.10-2012, RSA-1024, AES-256-GCM, XChacha20-poly1305. Реализация нативно на чистом 1С без COM-объектов и внешних компонент.

1 стартмани

17.03.2025    5305    55    alexyur    10    

7

Защита ПО и шифрование Программист 1С:Предприятие 8 1С:Управление торговлей 11 Абонемент ($m)

Небольшой пример - "лайф-хак" по установке собственного пароля на отчет или обработку, не втягивая в это RLS.

3 стартмани

06.03.2025    3812    7    aximo    23    

13

Защита ПО и шифрование Программист 1С:Предприятие 8 Бесплатно (free)

В статье приведен простой способ защиты кода внешней обработки от несанкционированного доступа (если это необходимо).

30.12.2024    11195    artemusII    26    

10
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. scientes 297 07.08.26 17:18 Сейчас в теме
1С может работать с числами любой длины. Просто функция сообщить() выводится не все. По-моему, только 300 символов.
Для отправки сообщения требуется регистрация/авторизация