Что случилось? Расшифровка Python RSA/

#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]