У меня есть следующий код 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» на основе ключа, а повторный запуск программы должен вернуть содержимое в исходную форму.
однако, когда я действительно запускаю код, некоторые буквы меняются местами.
например:
если содержимое "привет мир"
и я использую ключ "а"
после запуска кода дважды я остаюсь с "hekko workd"
почему это происходит и как я могу это исправить?
p.s. Я знаю, что это не безопасный алгоритм шифрования и мой код не очень эффективен. Я новичок в Python и думал, что это будет забавная задача, чтобы попробовать. Я зашел так далеко и не могу найти никаких причин, почему это не работает