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!'

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

Просмотров:   8774

Комментарии

ср, 01/18/2017 - 10:42
Александр

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

вт, 03/28/2017 - 17:44

b"" - значит что это bytes, а не обычная строка.

my_str = "hello world"
my_str_as_bytes = str.encode(my_str)

вс, 04/30/2017 - 19:06
Владислав

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

пт, 05/05/2017 - 10:51

Тут можно посмотреть как загружать ключ из файла:
https://stuvel.eu/python-rsa-doc/usage.html

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

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и параграфы переносятся автоматически.
CAPTCHA
Введи эти символы. Ато роботы одолели!