加密文本文件但留空?

时间:2015-06-23 17:42:31

标签: python encryption spaces

我已成功设法创建了一个代码,该代码使用程序中较早的随机生成的偏移系数对文本文件进行加密,但我不知道如何在不加密的情况下将空格留在原来的位置?< / p>

text_file = open("sample.txt", "r")

characters = []
for line in text_file:
    for c in line:
        characters.append(c)

text_ascii = []
text_number = 0
new_number = 0
cipher_text = ""
for i in characters:
    if i not in (" "):
        text_ascii = ord(i)
        text_number = text_ascii + offset_factor
        if text_number > 126:
            text_number = text_number - 94
        new_number = chr(text_number)
        cipher_text = cipher_text + new_number

print (cipher_text)

我现在的代码并没有对空格进行加密或完全包含它们。

文本文件的内容(称为&#39; sample.txt&#39;以及所有在一行中)是:

在拉曼查的某个地方,在一个我不记得的名字的地方,一位绅士不久前生活过,其中一位在架子上有长矛和古盾的人,还有一只瘦小的唠叨和一只赛狗用于比赛

2 个答案:

答案 0 :(得分:1)

你忘了处理 空格的情况。

if ...:
   ...
else:
  cipher_text += ' '

答案 1 :(得分:0)

会起作用,但我建议你使用函数maketrans,并在python 3+中翻译你必须使用str.maketrans和str.translate,但python 2.x你必须导入字符串并使用string.maketrans和string.translate。使用这些函数,python允许一个非常有效,简短且易于遵循的凯撒密码加密方法......

message = input('enter message').lower()
offset = int(input('enter offset (enter a negative number to decrypt)'))
alphabet = 'abcdefghijklmnopqrstuvwxyz'
enc_alphabet = (alphabet[alphabet.index(alphabet[offset]):len(alphabet)])+alphabet[0:offset]
data = str.maketrans(alphabet,enc_alphabet)
final_message = str.translate(message, data)
print(final_message)