RSA шифрование в Python

В наше время защита данных это уже целая ветвь науки, сотни умов трудятся над улучшением защиты и еще миллионы проводят ночи в попытках получения данных.
При таком раскладе конечно нужно уметь шифровать. В python нам поможет модуль rsa.
RSA — криптографический алгоритм с открытым ключем. При создании приложения вы генерируете два ключа: публичный (открытый) и приватный (закрытый).
Открытый ключ передается всем желающим и заинтерисованным. С его помошью можно зашифровать данные. А вот расшифровать можно только знаю другой ключ из пары (т.е. закрытый), его мы никому не скажем даже под страхом смерти.

Чтобы установить модуль rsa для python:

pip install rsa

После загрузки приступаем к шифрованию.

import rsa
(pubkey, privkey) = rsa.newkeys(512)

message = b'Hello Blablacode.ru!'

# шифруем
crypto = rsa.encrypt(message, pubkey)
print(crypto)
#расшифровываем
message = rsa.decrypt(crypto, privkey)
print(message)

Генерировать каждый раз пару ключей Вам не понадобится. Нужно просто сохранить их в удобном месте.
Вывод программы:

$ python3 rsa_test.py 
b'\x19\xd1\xbb\xf8N\xb7\xa8F\xf2\x19\xaa\xd1\x17\x868\xbcn\xc8\x85\xd4r\x81\xdaK\x0f\x80\xee1P\xdd\xdcV5\xed\x12\xf6S\x7f\xd7&f\x9e\xdawC\x038\xbb\xbaX\x8ae\x18\xeaR\x12E\r\x90\xc5c\x18\xd4\r'
b'Hello Blablacode.ru!'

Вперед шифровать все подряд, товарищи!

 

Похожий код:

Фото аватара
Алексей Петров

Программист, разработчик с 5 летним опытом работы. Учусь на разработчика игр на Unity и разработчика VR&AR реальности (виртуальной реальности). Основные языки программирования: C#, C++.

Оцените автора
Бла, бла код
Добавить комментарий

  1. Александр

    Хорошо, уже заранее создана переменная с содержимым message = b'Hello Blablacode.ru!'. Я так понял b это что то типа ключа и что то в этом духе, без него алгоритм шифрования не работает, если я правильно понял?

    но если я хочу организовать ввод с клавиатуры, как это сделать чтоб вводимый допустим пароль зашифровался?
    Часть кода:

    while True:

    try:

    login = input('Придумайте Login: ')

    (pubkey, privkey) = rsa.newkeys(512)

    pas1 = input('Придумайте пароль: ')

    pas1 = rsa.encrypt(pas1, pubkey)

    print('Зашифровали ', pas1)

    c.execute('INSERT INTO admin(login, pas1) VALUES(?, ?)', (login, pas1))

    connect.commit()

    print('Регистрация завершена, пожалуйста авторизуйтесь!')

    pas1 = rsa.decrypt(pas1, privkey)

    print('Расшифровали ', pas1)

    break

    except:

    print('Ошибка регистрации, повторите!!!')

    Вводимый пароль не принимает. print('Ошибка регистрации, повторите!!!')

    Ответить
    1. lamazavr

      b»» — значит что это bytes, а не обычная строка.
      my_str = «hello world»

      my_str_as_bytes = str.encode(my_str)

      Ответить
  2. Владислав

    Здравствуйте! Допустим у меня есть код, в котором я создаю public и private key, и я хочу расшифровать данные в сообщении в ДРУГОМ коде. Как это реализовать? При попытке: print(pubkey), а затем в другом коде вставлении этого кода, выдаёт ошибку о том, что объект priv_key не имеет аттрибута "n":
    File "C:\Python34\lib\site-packages\rsa\pkcs1.py", line 230, in decrypt

    blocksize = common.byte_size(priv_key.n)

    AttributeError: 'str' object has no attribute 'n'

    Ответить
    1. lamazavr

      Тут можно посмотреть как загружать ключ из файла:

      https://stuvel.eu/python-rsa-doc/usage.html

      Ответить
  3. Гость

    Чем по сути является ключ. Ну там строка, строка байтов

    Ответить