0

「キー」ファイルによって文字列内のすべてを変更する「エンクリプター」をPythonで作成しようとしています。

コード:

alphabet = "abcdefghijklmnopqrstuvwxyz0123456789"
alphabet = list(alphabet)
cryptkey = open("cryptkey", "r")
key = cryptkey.read(36)

text = list(key)
tocrypt = open("tocrypt.txt", "r")    
tocryptvar = tocrypt.read()
tocryptvar = tocryptvar.lower()
################################################    Replacement
tocryptvar = tocryptvar.replace("a", key[0]).replace("b", key[1]).replace("c", key[2]) #etc

キーは、アルファベットと数字をシャッフルしてファイルに入れるだけです。つまり、私の問題は、たとえば、A が B に置き換えられて、B はすべて良いと言ったときに、B が G に変わって、A が G になったということです。

4

4 に答える 4

2

これでうまくいくはずです:

import string as str_module

alphabet = "abcdefghijklmnopqrstuvwxyz0123456789"
key = None
with open("cryptkey", "r") as f:
    key = f.read(36)

tocryptvar = None
with open("tocrypt.txt", "r") as f:
    tocryptvar = f.read().lower()

trans_table = str_module.maketrans(alphabet, key)

tocryptvar = tocryptvar.translate(trans_table)

alphabetキーを使用して変換されるkey文字列です。 は対応する文字alphabetが変換される文字列です。string.maketrans()からalphabetkeyの翻訳文字列を作成tocryptvar.translate(trans_table)し、翻訳テーブルを使用して文字列を翻訳します ( にない文字alphabetは同じままです)。

于 2013-08-11T18:46:28.870 に答える
0
alphabet = list("abcdefghijklmnopqrstuvwxyz0123456789")
key = list(open("cryptkey", "r").read(36))
mapping=dict(zip(alphabet,key))

tocryptvar = open("tocrypt.txt", "r").read().lower()
cryptedval=''.join([mapping[k] for k in tocryptvar])
于 2013-08-11T18:55:10.043 に答える