2017-07-28 15 views
0

ちょうど小さなviginere暗号コードを完成させました。私は、各文字が暗号化された後にsboxに2文字のスワップを追加することによって、動的にしようと考えていました。Pythonの文字列の条件付きスワップ?

問題は、文字列の文字をスワップする情報があるところでは、スワップする文字の位置をコード自体に書き留めなければならないことです。スワップされる文字が別の関数のラウンドの結果に依存するようにする方法はありますか?

いくつかの明確化:私は持っている私のコードの上部にある:

a = 'abcdefghijklmnopqrstuvwxyz' 

その後、私が持っている暗号化機能に:

for p,k in zip(plaintext,keystream): 
    pt = a.index(p) 
    kt = a.index(k) 
    c = pt + kt 
    if c > 25: 
     c -= 25 
    c = a[c] 
    ciphertext += c 

だから私の質問は、私は交換したい場合は何であり、平文の各文字が暗号化された後にaの2文字を暗号化し、その文字が暗号化されるたびにa.index(p)a.index(k)の値に依存するようにします。それをどうやって行うのですか?

このような何かがうまくいく

答えて

0

if not p == k: 
    x, y = p, k if p < k else k, p 
    a = a[:x] + a[y] + a[x+1:y] + a[x] + a[y+1:] 

これは、最初に二文字に置き換えられ、その後、その後、その場所に2つの文字間のすべてを他の文字を使用して、最初の文字までのすべてを占めます、そして最後に2番目の文字の後のすべて