1 Востаннє редагувалося Eff1c (07.01.2019 21:53:05)

Тема: шифрування RSA

Захотів створити програмку, яка буде зберігати і видавати паролі користувача. Але хочу, щоб паролі, спочатку шифрувалися, а тоді зберігалися. і при виводі - розшифровувалися.
Погуглив я трохи і вирішив скористатися RSA шифруванням.
Виникла така проблема - при шифруванні строкі (на прикладі) треба. щоб перед нею стояв символ "b" (Позначив коментарем "!!!"):

import rsa
(pubkey, privkey) = rsa.newkeys(512)
 
message = b'Hello World!'  #!!! 
 
# шифруємо
crypto = rsa.encrypt(message, pubkey)
print(crypto)
#розшифровуємо
message = rsa.decrypt(crypto, privkey)
print(message)

І я не розумію як туди ввести строку.
Допоможіть будь ласка. І поясніть, що таке "b" і що воно робить.

2 Востаннє редагувалося koala (07.01.2019 22:04:32)

Re: шифрування RSA

Байтова стрічка - bytes - має розмір рівно 1 байт на символ. При перетвореннях завжди треба вказувати кодування:

>>> b'абв'
SyntaxError: bytes can only contain ASCII literal characters.
>>> bytes('абв',encoding="UTF-8")
b'\xd0\xb0\xd0\xb1\xd0\xb2'

Також є тип bytearray - схожий на bytes, але його можна змінювати, як list.

>>> b=bytearray('абв',encoding="UTF-8")
>>> b
bytearray(b'\xd0\xb0\xd0\xb1\xd0\xb2')
>>> b[1]+=1
>>> b.decode("UTF-8")
'ббв'
Подякували: /KIT\, leofun01, Eff1c3

3

Re: шифрування RSA

Найперше, про кодування тексту раджу прочитати цей розділ підручника Python, тоді питань про те що таке префікс b не виникатиме.

Ну і шифрувати паролі ключами RSA якось непрактично я б сказав. Я б застосовував для цього Fernet з https://cryptography.io/en/latest/

Але я взагалі не зберігаю паролі на диску чи в хмарах, вони зберігаються в області значень хеш-функції oplop: https://bunyk.wordpress.com/2012/01/12/ … d-fatigue/ :D Дуже зручно.

Подякували: leofun01, Eff1c2

4

Re: шифрування RSA

Дуже дякую  ;)