为什么我无法使用增量加密和解密照片文件?



我编写了一个非常简单的加密和解密程序,通过将所有字节加6来加密文件。然而,在测试中,只有文本文件有效。如果我用它来加密和解密照片,结果是不可读的操作系统。

Python代码:

import os.path

class fileEncryptor:
@staticmethod
def encrypt(fileLocation, destination):
if os.path.exists(fileLocation):
file = open(fileLocation, "rb")
fileContents = file.read()  # fileContents is a byte string
file.close()
btAr = bytearray(fileContents)  # Byte string needs to be changed to byte array to manipulate

length = len(btAr)
n = 0
while n < length:
increment = 6
if btAr[n] <= 249:
btAr[n] = btAr[n] + increment
if 249 < btAr[n] <= 255:
btAr[n] = btAr[n] - 250
n = n + 1
encryptedFile = open(destination, "wb")
encryptedFile.write(btAr)
encryptedFile.close()
else:
print("File does not exist")
@staticmethod
def decrypt(fileLocation, destination):
if os.path.exists(fileLocation):
file = open(fileLocation, "rb")
fileContents = file.read()
file.close()
btAr = bytearray(fileContents)
length = len(btAr)
n = 0
while n < length:
increment = 6
if 5 < btAr[n] <= 255:
btAr[n] = btAr[n] - increment
if btAr[n] <= 5:
btAr[n] = btAr[n] + 250
n = n + 1
decryptedFile = open(destination, "wb")
decryptedFile.write(btAr)
decryptedFile.close()
else:
print("File does not exist")

if __name__ == "__main__":
fileEncryptor.encrypt("D:Python ProjectsDesignerProjectic.ico", "D:Python ProjectsDesignerProjectoutputic.ico")
fileEncryptor.decrypt("D:Python ProjectsDesignerProjectoutputic.ico", "D:Python ProjectsDesignerProjectoutputi.ico")

此部分需要修改为else:

if btAr[n] <= 249:
btAr[n] = btAr[n] + increment
if 249 < btAr[n] <= 255:
btAr[n] = btAr[n] - 250

像这样:

if btAr[n] <= 249:
btAr[n] = btAr[n] + increment
else:
btAr[n] = btAr[n] - 250

否则,如果第一个if为真,则字节被改变,第二个if可能会运行,应用两倍的增量。

解密也一样。

最新更新