В наше время защита данных это уже целая ветвь науки, сотни умов трудятся над улучшением защиты и еще миллионы проводят ночи в попытках получения данных.
При таком раскладе конечно нужно уметь шифровать. В 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('Ошибка регистрации, повторите!!!')
b»» — значит что это bytes, а не обычная строка.
my_str = «hello world»
my_str_as_bytes = str.encode(my_str)
Здравствуйте! Допустим у меня есть код, в котором я создаю 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'
Тут можно посмотреть как загружать ключ из файла:
https://stuvel.eu/python-rsa-doc/usage.html
Чем по сути является ключ. Ну там строка, строка байтов