Encryption 一次性焊盘解决方案不正确

Encryption 一次性焊盘解决方案不正确,encryption,Encryption,我的解决方案: A、B、C、D、E_ 123450 密文:DBCA 一次性键盘和按键:BCBC B C B C 2 3 2 3 D B C A 4 2 3 1 加密文本: B A B 2 1 2 我得到的加密单词是:BAAB,这不是一个单词,所以我认为它是不正确的 我已经研究过如何使用一次性垫,但我仍然不明白它。一次性垫不是那样的。 代码长度必须至少与文本长度相同。因为每次加密和解密文本时,您都要使用它一次 A one time pad encryption system represents

我的解决方案:

A、B、C、D、E_ 123450

密文:DBCA 一次性键盘和按键:BCBC

B C B C 2 3 2 3

D B C A 4 2 3 1

加密文本: B A B 2 1 2

我得到的加密单词是:BAAB,这不是一个单词,所以我认为它是不正确的


我已经研究过如何使用一次性垫,但我仍然不明白它。

一次性垫不是那样的。 代码长度必须至少与文本长度相同。因为每次加密和解密文本时,您都要使用它一次

A one time pad encryption system represents the letters A-E with numbers 1-5 and a space with the number 0. Given the cipher text: DBCA

and the one time pad: BCBC

What is the encrypted word?
这是Python中一次性Pad加密的完整实现。

一次性焊盘使用异或操作在位上工作。当然,我们可以将数字0-5表示为位,但对B和D(2和4)进行异或运算将得到不在0-5范围内的6。不在范围内的数字会发生什么?还有,为什么你认为你的解决方案是错误的?我尝试了很多次,有时我也得到了6和8,但那不在范围内,没有任何关于超出范围的数字的说明。我认为我的解决方案是错误的,因为它是一个加密的单词,而BAAB不是一个单词。结果必须是一个真实的单词吗?“结果必须是一个真实的单词吗?”-不知道,问问你的老师。
f = open("plain.txt", "rb+")
kf = open ("key.txt", "rb" )
f2= open("cipher.txt", "r+")

allplain = f.read()
key =[]
key = kf.read()
#   - encrypt plain text and save into cipher.txt

for i in range(len(allplain)):
    k = chr (key[i])
    p = chr (allplain[i])
    c = chr ((ord(p)) ^ (ord(k)))
    f2.write(c)