У меня есть код python, который шифрует изображение с помощью pyfhel (полностью гомоморфное c шифрование). Изображение шифруется путем открытия изображения как массива int и шифрования каждого значения этого массива. Когда я пытаюсь сохранить этот новый массив шифров как новое изображение, я получаю простое изображение. Фактический размер увеличивается. (от 4 кб до 7 кб). Что я делаю неправильно?
Вот код:
from Pyfhel import Pyfhel, PyCtxt
from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
def enc(file,HE):
img = Image.open(file)
plt.imshow(img)
plt.show()
imgArrayShaped = np.array(img)
shape = imgArrayShaped.shape
imgArrayFlatten = imgArrayShaped.flatten()
size = imgArrayShaped.size
listOfChiperText = []
for i in range (0,size):
ctxt1 = HE.encryptInt(imgArrayFlatten[i])
listOfChiperText.append(ctxt1)
arrayImg = np.array(listOfChiperText)
arrayImg = arrayImg.reshape(shape)
recImg = Image.fromarray(arrayImg.astype('uint8'))
recImg.save("1_c.png")
return recImg
HE = Pyfhel() # Creating empty Pyfhel object
HE.contextGen(p=65537, m=1024, flagBatching=True) # Generating context
# Key Generation
HE.keyGen()
file = "1.png"
encrImg = enc(file,HE)
plt.imshow(encrImg)
plt.show()
Это результат: первое изображение является простым, второе - зашифрованным.