私はプログラミングに不慣れで、Pythonを使用してVigenère暗号化暗号を作成しようとしています。アイデアは非常に単純であり、私の関数も同様ですが、次の行にあります。
( if((BinKey[i] == 'b')or(BinKey[i+1] == 'b')): )
インデックスに問題があるようですが、修正方法がわかりません。エラーメッセージは次のとおりです。
IndexError: string index out of range
おそらくpythonがを再インクリメントしていると思ったので、i+1
インデックスをに等しい別の変数に置き換えようとしましたが、それでも機能しません。i+1
i
だから私の質問は:
問題を解決する方法、そして私は何を間違えましたか?
コードを見て、プログラミングスキルを向上させるために何を学ぶことができますか?
私は自分のプログラム(すべての暗号化暗号を含む)への単純なインターフェースを構築したいと思っています、そして私がグーグルから思いついたのはpyqtだけです、しかしそれは非常に単純なインターフェースにはあまりにも多くの仕事のようです、それでもっと簡単な方法がありますインターフェイスを構築するには?(私はEclipse IndigoとpydevをPython3.xで使用しています)
Vigenère暗号化関数(問題の原因となる行が含まれています)は次のとおりです。
def Viegner_Encyption_Cipher(Key,String):
EncryptedMessage = ""
i = 0
j = 0
BinKey = Bin_It(Key)
BinString = Bin_It(String)
BinKeyLengh = len(BinKey)
BinStringLengh = len(BinString)
while ((BinKeyLengh > i) and (BinStringLengh > j)):
if((BinKey[i] == 'b')or(BinKey[i+1] == 'b')):
EncryptedMessage = EncryptedMessage + BinKey[i]
else:
EncryptedMessage = EncryptedMessage + Xor(BinKey[i],BinString[j])
i = i + 1
j = j + 1
if (i == BinKeyLengh):
i = i+j
return EncryptedMessage
これはBin_It
機能です:
def Bin_It(String):
TheBin = ""
for Charactere in String:
TheBin = TheBin + bin(ord(Charactere))
return TheBin
そして最後にこれはXor
関数です:
def Xor(a,b):
xor = (int(a) and not int(b)) or (not int(a) and int(b))
if xor:
return chr(1)
else:
return chr(0)