Я шифрую изображения в python3 с помощью алгоритма RSA, но получаю некоторую ошибку при запуске кода;ошибка:
File "encrypt_blob.py", line 59, in <module>
encrypted_blob = encrypt_blob(unencrypted_blob, public_key)
File "encrypt_blob.py", line 37, in encrypt_blob
chunk += " " * (chunk_size - len(chunk))
TypeError: can't concat str to bytes
Я сгенерировал ключи ранее и использую их в этом скрипте для шифрования файла изображения.Но я получаю эту ошибку.так как я нашел этот код в блоге, я думаю, что код написан на python2, но я использую python3, и я не знаю, как решить проблему
Код:
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_OAEP
import zlib
import base64
def encrypt_blob(blob, public_key):
#Import the Public Key and use for encryption using PKCS1_OAEP
rsa_key = RSA.importKey(public_key)
rsa_key = PKCS1_OAEP.new(rsa_key)
#compress the data first
blob = zlib.compress(blob)
#In determining the chunk size, determine the private key length used in bytes
#and subtract 42 bytes (when using PKCS1_OAEP). The data will be in encrypted
#in chunks
chunk_size = 470
print(type(chunk_size))
offset = 0
end_loop = False
encrypted = ""
print(type(encrypted))
while not end_loop:
#The chunk
chunk = (blob[offset:offset + chunk_size])
#If the data chunk is less then the chunk size, then we need to add
#padding with " ". This indicates the we reached the end of the file
#so we end loop here
if len(chunk) % chunk_size != 0:
end_loop = True
chunk += " " * (chunk_size - len(chunk))
#Append the encrypted chunk to the overall encrypted file
encrypted += (rsa_key.encrypt(chunk))
#Increase the offset by chunk size
offset += chunk_size
#Base 64 encode the encrypted file
return base64.b64encode(encrypted)
#Use the public key for encryption
fd = open("public_key.pem", "rb")
public_key = fd.read()
fd.close()
#Our candidate file to be encrypted
fd = open("img.jpg", "rb")
unencrypted_blob = fd.read()
fd.close()
encrypted_blob = encrypt_blob(unencrypted_blob, public_key)
#Write the encrypted contents to a file
fd = open("encrypted_img.jpg", "wb")
fd.write(encrypted_blob)
fd.close()
Ждем предложений.Спасибо.