Блоґ одного кібера

Історія хвороби контуженого інформаційним вибухом

Геренуємо пару ключів для цифрового підпису за допомогою RSA в Python

with 7 comments

Для тих кому викликати openssl набридло. Це дивно, але цього нема в стандартній бібліотеці python, тому:

sudo pip install pycrypto

Тоді:

from Crypto.PublicKey import RSA
from Crypto import Random

private_key = RSA.generate(1024, Random.new().read)
public_key = private_key.publickey()

print(private_key.exportKey().decode('ascii'))
print(public_key.exportKey().decode('ascii'))

Що дасть нам:

-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQCFO0e8pxFV5Niq9Kjkn7HpX5xCbsh2oP56t2goNw/qZnddzW1x
... blablabla ...
dB6mvhutUqKRZDaA1o4y1kytKTG42RfEtdm8t1Z/77dS
-----END RSA PRIVATE KEY-----
-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCFO0e8pxFV5Niq9Kjkn7HpX5xC
bsh2oP56t2goNw/qZnddzW1xW3rWxYI2/Jxp/hv7EGapg12EcViF/C8Uv2WbCDEM
LIRaMqtHKFNaniscMgZKgaohkjXcLk5dIrVXuuxY7sk07BZqj+Jsv6xgR6GZ0CmG
Q3ZOmGAKksC/YA3gYwIDAQAB
-----END PUBLIC KEY-----

В іншій публікації було показано як це робити допомогою openssl, і як цими ключами підписати токен.

Advertisements

Written by bunyk

Червень 26, 2018 at 11:00

Оприлюднено в Інструменти, Кодерство

Tagged with ,

Відповідей: 7

Subscribe to comments with RSS.

  1. О, наскільки притомніший API. Очевидно, люди, яких можна налякати ключами tar, і не підозрюють про існування openssl.

    Дмитро С.

    Червень 26, 2018 at 14:53

    • Притомніший, особливо коли до того ти ці ключі читав з файлу і перед запуском скрипта генерив руками. 🙂

      Мене можна налякати ключами tar, але про openssl я знаю. Всі хто собі робили доступ до Github без пароля – знають.

      bunyk

      Червень 26, 2018 at 16:55

  2. Тарас, вже давай на Go переходь 🙂

    Alexander Shchapov (@darednaxella)

    Червень 27, 2018 at 10:15

    • bunyk

      Червень 27, 2018 at 10:46

      • Ну а шо, я можу, я прямо на всі руки Schlosser 🙂 Це дивно, але все є в стандартній бібліотеці Go, хоча ніхто не казав що там батарейки включені.

        bunyk

        Червень 27, 2018 at 10:54

        • Гарно! 🙂

          Alexander Shchapov (@darednaxella)

          Червень 27, 2018 at 16:00

          • Скажи, ото тільки зранку написав цей код суто для вправи, а вже ввечері він мені корисний в юніт-тестах. Тільки от MarshalPKCS1PublicKey треба замінити на MarshalPKIXPublicKey, бо jwt-go, який в нас парсить токени авторизації не розуміє перший формат.

            bunyk

            Червень 27, 2018 at 17:46


Залишити відповідь

Заповніть поля нижче або авторизуйтесь клікнувши по іконці

Лого WordPress.com

Ви коментуєте, використовуючи свій обліковий запис WordPress.com. Log Out /  Змінити )

Google+ photo

Ви коментуєте, використовуючи свій обліковий запис Google+. Log Out /  Змінити )

Twitter picture

Ви коментуєте, використовуючи свій обліковий запис Twitter. Log Out /  Змінити )

Facebook photo

Ви коментуєте, використовуючи свій обліковий запис Facebook. Log Out /  Змінити )

w

З’єднання з %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d блогерам подобається це: