1 回答

TA貢獻(xiàn)1815條經(jīng)驗 獲得超10個贊
請注意,運行循環(huán)時未更改的字符是在字符串中出現(xiàn)偶數(shù)次的字符。相同的 XOR 操作用于加密和解密字符,因為將一個數(shù)字與另一個數(shù)字進(jìn)行兩次異或會得到相同的數(shù)字。您缺少的是 Python用第二個字符串str.replace()替換所有出現(xiàn)的第一個字符串的事實。當(dāng)您遇到第一個 'e' 時,字符串中的所有 'e' 都將替換為key ^ ord('e')您剛剛遇到的那個。像“t”這樣的其他字符也被多次異或,但您不會注意到它們,因為對數(shù)字進(jìn)行 3 次異或與對數(shù)字進(jìn)行 1 次異或相同。
為了更輕松地對字符進(jìn)行迭代和操作,您應(yīng)該使用可變序列類型,例如bytearray:
text = "there is something wrong with my code"
key = 154
print(key)
ba = bytearray(text, "latin_1")
for i in range(0, len(ba)):
ba[i] = ba[i] ^ key
print(ba.decode("latin_1"))
for i in range(0, len(ba)):
ba[i] = ba[i] ^ key
print(ba.decode("latin_1"))
添加回答
舉報