我制作了一个非常简单的加密和解密程序,通过将所有字节增加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 Projects\DesignerProject\ic.ico", "D:\Python Projects\DesignerProject\output\ic.ico")
fileEncryptor.decrypt("D:\Python Projects\DesignerProject\output\ic.ico", "D:\Python Projects\DesignerProject\output\i.ico")发布于 2022-05-15 22:14:50
此部分需要更改为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,应用增量的两倍。
解密也一样。
https://stackoverflow.com/questions/72252454
复制相似问题