0

私がやろうとしているのは、(指定した) テキスト ファイルを A ~ Z の文字で暗号化し、それを別のファイルに保存するプログラムを作成することです。

たとえば、テキスト ファイルの最初の文字が「A」、2 つ目の文字が「B」、3 つ目の文字が「C」などとなるようにします。

誰かが私を助けてくれるか、少なくとも始める方法についていくつかのヒントを教えてくれるかどうか疑問に思っていました.

4

2 に答える 2

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.

これに関する問題は、その過程で情報が大幅に失われるため、テキストの暗号化を解除する実用的な方法があるとは思わないことです。文字の暗号化されたバージョンは、ファイル内の相対的な位置にのみ依存し、元々のものではありません。

于 2012-11-17T15:35:54.503 に答える
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
于 2012-11-17T15:39:08.623 に答える