0

我正在尝试一种密码技术(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)))
4

2 回答 2

0

直接从上面的函数中尝试简单的列表理解 -

text, key = 'ajshwhsuhe','amchaksheo'

cipher = ''.join([chr((ord(text[i])+ord(key[i])) % 26+65) for i in range(len(text))])

print(cipher)
'MHGAIDWNXE'
于 2020-08-28T11:12:18.957 回答
0

您可以使用zip同时遍历输入和键中的字符

>>> input, key = 'HELLO', 'XMCKL' 
>>> ''.join(chr((ord(x)+ord(y)) % 26+65) for x,y in zip(input, key))
'EQNVZ'
于 2020-08-28T11:22:37.140 回答