在python上带'空格'的vigenere加密问题

问题描述 投票:0回答:1

我无法查明'空格'后加密出错的原因这是代码:

def chiffre_vigenere(message,key):
        message = message.lower()
        key = key.lower()
        encrypted = []
        d = dict(a=0,b=1,c=2,d=3,e=4,f=5,g=6,h=7,i=8,j=9,k=10,l=11,m=12,n=13,o=14,p=15,q=16,r=17,s=18,t=19,u=20,v=21,w=22,x=23,y=24,z=25)
        long_key = key
        while len(message) > len(long_key) :
                long_key = long_key + key
        i=0
        while i < len(message) :
                decalage = d.get(long_key[i])
                if message[i].isalpha() :            
                        c = ord(message[i]) + decalage
                        if c > 122 :
                                c = c - 26
                        encrypted.append(chr(c))
                else :
                        encrypted.append(message[i])       
                i = i+1
        print(listToString(encrypted))

例如,当我这样做时:chiffre_vigenere('stack stack','apple')它给出了:sipno dkpvfadh第一个单词正确加密,但空格后加密错误任何帮助表示赞赏,谢谢

python encryption vigenere
1个回答
0
投票

问题是您使用相同的计数器变量i在两个不同的字符串中标记您的位置:messagelong_key。每当您在message中遇到非字母字符时,您便会移至下一个字符,但同时也将移至long_key中的下一个字符,这不是您想要执行的操作。

© www.soinside.com 2019 - 2024. All rights reserved.