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

Опубликовано lamazavr - пн, 05/04/2015 - 11:11
Body

В наше время защита данных это уже целая ветвь науки, сотни умов трудятся над улучшением защиты и еще миллионы проводят ночи в попытках получения данных.
При таком раскладе конечно нужно уметь шифровать. В 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!'

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

Комментарии

Хорошо, уже заранее создана переменная с содержимым 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('Ошибка регистрации, повторите!!!')

Здравствуйте! Допустим у меня есть код, в котором я создаю 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'

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

Добавить комментарий

Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.