#python #encryption #rsa
#python #шифрование #rsa
Вопрос:
decrypt_message1 =decrypt_message[i] расшифровывать сообщение
Ошибка типа: невозможно объединить байты в int.
decrypt_message1
и decrypt_message[i]
оба байта
if int(length)>=1:
for i in range(int(length) 1):
decrypt_message1=""
if i<int(length) 1:
decrypt_message1=decrypt_message1.encode()
for i in range(50):
decrypt_message1 =decrypt_message[i]
try:
decrypt = rsa.decrypt(decrypt_message1, privkey)
except Exception as E:
print(E)
decrypt=decrypt.decode()
text1.insert(END,decrypt)
else:
decrypt_message1=decrypt_message1.encode()
for i in range(len(message)-int(length)*20):
decrypt_message1 =decrypt_message[i]
try:
decrypt = rsa.decrypt(decrypt_message1, privkey)
except Exception as E:
print(E)
decrypt=decrypt.decode()
text1.insert(END,decrypt)
Ответ №1:
decrypt_message[i]
не является bytes
объектом. Это int
:
>>> b"hello"[0]
104
Изменить:
decrypt_message1=decrypt_message1.encode()
for i in range(50):
decrypt_message1 =decrypt_message[i]
Для:
decrypt_message1=decrypt_message1.encode()
decrypt_message1 = decrypt_message[:50]
Простые индексы с индексом bytes
возвращают целочисленное значение, хранящееся в этой позиции.
Нарезка возвращает bytes
объект. Посмотрите разницу между:
>>> b"hello"[0]
104
и:
>>> b"hello"[:1]
b'h'
Ответ №2:
Я полагаю, что это может быть =
оператор, вызывающий проблемы, потому что он вызывает __iadd__
вместо __add__
.
Попробуйте decrypt_message1 = decrypt_message1 decrypt_message[i]