我正在嘗試一種密碼技術(shù)(One Time Pad),我得到了解決方案,但想使其成為一行。下面分別是輸入和輸出示例。INPUT(TEXT) = 'HELLO', KEY = 'XMCKL', OUTPUT(CIPHERTEXT) = 'EQNVZ'。def ciphertextFor(text, key): cpt = [] for i in range(len(text)): cpt.append(chr((ord(text[i])+ord(key[i])) % 26+65)) return ''.join(cpt) # return ''.join(chr((ord(text[j])+ord(key[j])) % 26+65)) for j in range(len(text)))
2 回答

Helenr
TA貢獻1780條經(jīng)驗 獲得超4個贊
直接從上面的函數(shù)中嘗試使用簡單的列表理解 -
text, key = 'ajshwhsuhe','amchaksheo'
cipher = ''.join([chr((ord(text[i])+ord(key[i])) % 26+65) for i in range(len(text))])
print(cipher)
'MHGAIDWNXE'

HUH函數(shù)
TA貢獻1836條經(jīng)驗 獲得超4個贊
您可以使用zip同時迭代輸入和鍵中的字符
>>> input, key = 'HELLO', 'XMCKL'
>>> ''.join(chr((ord(x)+ord(y)) % 26+65) for x,y in zip(input, key))
'EQNVZ'
添加回答
舉報
0/150
提交
取消