平文の文字を置換するランダムな辞書を生成する置換暗号を作成しました。
コードは次のとおりです。
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の初心者なので、コードを手伝ってください。