0

平文の文字を置換するランダムな辞書を生成する置換暗号を作成しました。

コードは次のとおりです。

import random

alphabets=' ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789~!@#$%^&*()_+|:"<>-=[];,.?'
class HCPyEncoder:    
    def encode(self,plaintext):       
        length=len(alphabets)
        arr=range(0,length)
        random.shuffle(arr)
        pad,cipher="",""
        dictionary={}        
        for i in range(0,length):
            pad=pad+alphabets[arr[i]]
            dictionary[alphabets[i]]=alphabets[arr[i]]
        for i in plaintext:
            if i in dictionary:
                i=dictionary[i]
            cipher=cipher+i
        return cipher,pad

    def decode(self,ciphertext,pad):
        dictionary={}
        plaintext=""
        for i in range(len(pad)):
            dictionary[pad[i]]=alphabets[i]

        for i in ciphertext:
            if i in dictionary:
                i=dictionary[i]
            plaintext=plaintext+i
        return plaintext

encoder=HCPyEncoder()
ciphertext,pad=encoder.encode("Psycho Coder")
plaintext=encoder.decode(ciphertext,pad)
print "Ciphertext : ",ciphertext
print "Plaintext : ",plaintext

しかし問題は、毎回新しいキーまたはパッドを生成するため、秘密のメッセージが誰かに送信された場合、それを復元できないことです。

したがって、すべての暗号テキストの生成に使用されるランダムな辞書ではなく、固定の置換辞書を指定したいと考えています。

私はPythonの初心者なので、コードを手伝ってください。

4

1 に答える 1