第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 str.replace 在循環(huán)中運行 XOR 加密不會更改某些字符

使用 str.replace 在循環(huán)中運行 XOR 加密不會更改某些字符

慕妹3242003 2021-12-29 20:09:44
我正在嘗試加密文本,然后使用 XOR 對其進(jìn)行解密。它改變了大部分字母,但跳過了一些。當(dāng)我更改“鍵”時,它會跳過相同的字母。如果我嘗試另一個文本,它也會跳過一些字母,但在不同的地方。我試圖更改文本中的一個字母:“我的代碼有問題”“?òere ós s?me?òóng wr?ng wó?ò m? ù?te”所以它不會加密字母“e”,但是當(dāng)我將一個“e”更改為“X”時,它會起作用并加密字母“e”。text = "there is something wrong with my code"key = 154print(key)l?ngd = (len(text))for a in range(0,l?ngd):    b = ord(text[a])    ny = b ^ key    ny2 = chr(ny)    text = text.replace(text[a],ny2)print(text)for a in range(0,l?ngd):    b = ord(text[a])    ny = b ^ key    ny2 = chr(ny)    text = text.replace(text[a], ny2)print(text)如果我嘗試key = 153我得到"í?ere es s?meí?eng wr?ng weí? mà ú?ye".如果我嘗試key = 154我得到"?òere ós s?me?òóng wr?ng wó?ò m? ù?te".如您所見,它不會改變字母“e,r,n,g,w,m”。
查看完整描述

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"))


查看完整回答
反對 回復(fù) 2021-12-29
  • 1 回答
  • 0 關(guān)注
  • 166 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號