【发布时间】:2017-05-28 02:49:37
【问题描述】:
我创建了这段代码,它使用 Vigenère 密码来加密一个文本块,由于某种原因它给了我这个奇怪的输出
import string
original_word = raw_input("what text do you want to encrypt ?")
one_time_pad = raw_input("How do you want to encrypt ?")
word_array = list(original_word)
pad = list(one_time_pad)
i = 0
b = 0
for word in word_array:
word_array[i]= chr(ord(word) + ord(pad[b]))
print word_array
i += 1
if b == len(one_time_pad):
b = 0
else:
b += 1
cipher_text = "".join(word_array)
print cipher_text
这只会给我这个奇怪的输出
['\xc2', 'b', 'c']
['\xc2', '\xc4', 'c']
['\xc2', '\xc4', '\xc6']
???
有人可以解释一下吗?
【问题讨论】:
-
请修正您的缩进代码。
-
另外:
chr(ord('a') +ord('a'))给出:'\xc2'。我想你可能会重新考虑你的算法。或者你能解释一下你的算法是如何工作的吗? -
第一件事...
if b == len(one_time_pad)应该检查len()-1,因为one_time_pad[len(one_time_pad)]会产生IndexError。尝试使用b = (b + 1) % len(one_time_pad)而不是if-else。 -
好的,这应该可以通过添加字符的值并在该位置输出一个新字符来工作,我只是对输出感到困惑
标签: python python-2.7 encryption vigenere