-5
我正在使用RSA加密图像和枕头以逐字节读取它。我正在加密每个128字节。但是,当我试图解密它时,由此产生的图像不像原始图像。 这里是我的代码:需要帮助来加密/解密图像
from Crypto.PublicKey import RSA
from PIL import Image
def genearteRSAKeys(keyLength):
private = RSA.generate(keyLength)
public = private.publickey()
privateKey = private.exportKey()
publicKey = public.exportKey()
return privateKey, publicKey
def rsaEncrypt(pubKey, data):
publicKey = RSA.importKey(pubKey)
encryptData = publicKey.encrypt(data, "")
return encryptData
def rsaDecrypt(pivKey, data):
privateKey = RSA.importKey(pivKey)
decryptData = privateKey.decrypt(data)
return decryptData
im = Image.open("photo.jpg")
w, h = im.size
data = im.tobytes()
privateKey, publicKey = genearteRSAKeys(1024)
step = 128
block_cipher = []
for i in range(0, len(data), step):
encrypted = rsaEncrypt(publicKey, data[i:i+step])
block_cipher.append(''.join(encrypted))
data_cipher = ''.join(block_cipher)
img = Image.frombytes("RGB", (w, h), data_cipher)
img.save("photo2.jpg")
image = Image.open("photo2.jpg")
data_encrypt = image.tobytes()
block_plant =[]
for j in range(0, len(data_encrypt), step):
decrypted = rsaDecrypt(privateKey, data_encrypt[j:j+step])
block_plant.append(''.join(decrypted))
data_plant = ''.join(block_plant)
image2 = Image.frombytes("RGB", (w,h), data_plant)
image2.show()
为什么不是这个代码的工作?
任何人都可以解释为什么这个问题已经downvoted如此艰难?我不明白 – BPL
@BPL因为你没有给出关于预期行为的很多解释,而且看起来你只是希望我们纠正你的代码,而不用自己去做。请注意,我说“它**看起来像**”。 –
你可以链接图片(加密/解密之前,之后)吗? –