【发布时间】:2018-11-03 15:27:30
【问题描述】:
我有以下 python 代码:
file = open("encryption.txt","r")
str1 = file.read()
file.close
charList = []
for char in str1:
charList.append(char)
bits = []
ascList = []
for i in range(len(charList)):
ascList.append(ord(charList[i]))
ascList[i] = "{0:08b}".format(ascList[i])
currentAsc = ascList[i]
currentStr = str(currentAsc)
for x in range(len(currentStr)):
currentChar = currentStr[x]
bits.append(int(currentChar))
keyChar = input("enter the character that should act as the key: ")
keyAsc = "{0:08b}".format(ord(keyChar))
keyStr = str(keyAsc)
keyBits = []
for x in range(len(keyStr)):
keyBits.append(int(keyStr[x]))
key = []
while len(key) != len(bits):
for i in range(len(keyBits)):
key.append(keyBits[i])
resultBits = []
for i in range(len(bits)):
if key[i] != bits[i]:
resultBits.append("1")
else:
resultBits.append("0")
resultSplitInt = []
resultInt = ''.join(resultBits)
for i in range(0,len(resultInt), 8):
resultSplitInt.append(resultInt[i:i+8])
resultSplit = []
for i in range(len(resultSplitInt)):
resultSplit.append(chr(int(resultSplitInt[i],2)))
result = ''.join(resultSplit)
file = open("encryption.txt","w")
print(str1)
print("--------------------")
print(result)
file.write(result)
print("done")
file.close()
运行一次程序应该会根据密钥改变“encryption.txt”的内容,再次运行程序应该会将内容恢复到原来的形式。
但是,当我实际运行代码时,一些字母被换掉了。
例如: 如果内容是“hello world” 我使用键“a” 运行代码两次后,我留下了“hekko workd”
为什么会发生这种情况,我该如何解决?
附言我知道这既不是一种安全的加密算法,也不是我的代码非常有效。我是 python 新手,并认为这将是一个有趣的任务。我已经走到了这一步,但找不到任何不工作的原因
【问题讨论】:
-
我无法重现;我得到“A”作为输出。但也许问题在于您没有正确关闭文件:
file.close应该是file.close()。 -
@Aran-Fey 你必须运行两次才能将文件转换回来
标签: python-3.x encryption