使用A-Z字母加密文本

时间:2012-11-17 15:16:15

标签: python encryption

我要做的是制作一个程序,使用字母A-Z加密文本文件(您指定的文件),然后将其保存在另一个文件中。

例如,使文本文件中的第一个字母为“A”,第二个字母为“B”,第三个字母为“C”等。

我想知道是否有人可以帮助我,或者至少给我一些如何开始的提示。

2 个答案:

答案 0 :(得分:3)

如果我从字面上理解你,就会这样做:

from itertools import cycle
import string

with open('input.txt', 'rt') as input, open('output.txt', 'wt') as output:
    cipher = cycle(string.uppercase)
    for line in input:
        encrypted = []
        for c in line:
            if c in string.letters:
                encrypted.append(cipher.next())
            else:
                encrypted.append(c)
        output.write(''.join(encrypted))

输入文件:

This is a sentence.
And so is this.

输出文件:

ABCD EF G HIJKLMNO.
PQR ST UV WXYZ.

这个问题是我认为没有一种实用的方法可以对文本进行解密,因为在这个过程中信息会有重大损失 - 字母的加密版本仅取决于它在文本中的相对位置。文件,而不是最初的内容。

答案 1 :(得分:0)

我有一个刺:

from string import ascii_uppercase
from itertools import count
from operator import itemgetter


text = 'hellothere'

counter = count(0)
ref = {}
for ch in text:
    if ch not in ref:
        ref[ch] = next(counter)

letters = ''.join(el[0] for el in sorted(ref.iteritems(), key=itemgetter(1)))
frm, to = zip(*zip(letters, ascii_uppercase))

from string import maketrans

trans = maketrans(''.join(frm), ''.join(to))
print text.translate(trans)

# ABCCDEABFB