fixin (fixin) wrote,
fixin
fixin

Category:

Чудеса RSA



Заказчик поставил задачу - чтобы моя программа на VB6 работала только с его оборудованием. Оборудование определяется по серийному номеру.


Решил использовать RSA - у заказчика есть закрытый ключ, у клиента - открытый.


Заказчик шифрует проданные клиенту серийники через RSA закрытым ключем, получается файл лицензий.


Клиент загружает файл лицензий, соответственно программа может открытым ключом расшифровать его и получить список серийников, с которыми она может работать.




Все бы хорошо, но все алгоритмы работы с RSA на Бейсике чрезмерно усложнены. То, что я делаю на OpenSSL играючи - одной командной строкой, тут приходится описывать ужасающе сложно. Вот как я это делаю на OpenSSL:


..\openssl\bin\openssl dgst -sign private.pem -out signature -md5 file.txt -c
..\openssl\bin\openssl dgst -signature signature -verify public.pem file.txt


Мысль вызывать OpenSSL через командную строку отверг как очевидное извращение. Я уже было почти дошел до обертки на VB над виндовой библиотекой CryptAPI, но тут нашел реализацию RSA http://www.di-mgt.com.au/crypto.html#dhvb.


Правда, автор предупреждает, что работает медленно, но у меня размер шифруемого текста  небольшой - равный длине серийника (серийник цифровой), думаю взлетит.


Также автор предупреждает, что его программа не генерирует ключи.


Но я их генерирую сам:


del private.pem
del public.pem
..\openssl\bin\openssl genrsa -out private.pem 2048
..\openssl\bin\openssl rsa -in private.pem -out public.pem -pubout


Остался только один момент - как извлечь числа модуля и экспоненты из PEM-файла открытого и закрытого ключа? Перелопатил весь интернет, не нашел.


Но хорошо на sql подсказали ссылку: http://www.sql.ru/forum/1084939/pem-kluch-rsa-gde-v-nem-hranyatsya-n-e-d


Попробовал - получилось:


rem http://www.openssl.org/docs/apps/rsa.html
..\openssl\bin\openssl rsa -pubin -inform PEM -text -noout -in public.pem -out public.info
..\openssl\bin\openssl rsa -inform PEM -text -noout -in private.pem -out private.info


Теперь будем надеяться что алгоритм от di-mgt работает.


А то я уже задачи фрилансерам кинул за 1500 рублей на реализацию подписи RSA. Посмотрим, может и сам справлюсь, гыгыгыгы...

Tags: программирование
Subscribe
promo fixin december 31, 2037 16:57 1417
Buy for 30 tokens
UPD: Друзья, в августе 2019 года блог переехал на http://fixinchik.ru. Welcome! Добро пожаловать в журнал Осипова Сергея Александровича, известного также как Fixin и Гений 1С. Рекомендую ознакомиться с Часто Задаваемыми Вопросами обо мне. Что я хочу в подарок - список. Мой проект "…
  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 32 comments
Previous
← Ctrl ← Alt
Next
Ctrl → Alt →
Previous
← Ctrl ← Alt
Next
Ctrl → Alt →