我是编程新手,我正在尝试使用 python 编写 Vigenère 加密密码。这个想法很简单,我的功能也是如此,但是在这一行中:
( if((BinKey[i] == 'b')or(BinKey[i+1] == 'b')): )
似乎我有一个索引问题,我不知道如何解决它。错误信息是:
IndexError: string index out of range
我试图i+1
用另一个等于 的变量替换索引i+1
,因为我认为 python 可能正在重新增加i
,但它仍然不起作用。
所以我的问题是:
如何解决问题,我做错了什么?
看看我的代码,我能学到什么来提高我的编程技能?
我想为我的程序构建一个简单的接口(它将包含所有加密密码),而我从谷歌想出的只是 pyqt,但是对于一个非常简单的接口来说似乎工作量太大,所以有没有更简单的方法建立一个界面?(我正在使用 Eclipse Indigo 和 Python3.x 的 pydev)
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)