使用mod 37的Python中的Vigenere Cipher程序

时间:2014-10-31 02:10:39

标签: python encryption vigenere

我正在尝试使用mod 37在Python中编写一个Vigenere Cipher程序。我需要帮助找出问题所在。

alphabet= "abcdefghijklmnopqrstuvwxyz0123456789 "

def Let2Ind(x):
        return(ord(x)-ord("a"))

def Ind2Let(n):
    return(alphabet[n])

def encVigenere(key, plaintext):
    ciphertext=""
    L=len(key)
    for i in range(len(plaintext)):
        A=Let2Ind(key[i%L])
        B=Let2Ind(plaintext[i])
        C=(A+B)%37
        D=Ind2Let(C)
        ciphertext= ciphertext+D
    return(ciphertext)

def decVigenere(key, ciphertext):
    plaintext=""
    L=len(key)
    for i in range(len(ciphertext)):
        E=Let2Ind(key[i%L])
        F=Let2Ind(ciphertext[i])
        G=(F-E)%37
        H=Ind2Let(G)
        plaintext= plaintext+H
    return(plaintext)

1 个答案:

答案 0 :(得分:1)

一个问题是您的Let2Ind()代码无法正确处理数字或空格。它将返回数字的负数(-49或0左右)和空格(-65)。

您可能需要以下内容:

def Let2Ind(x):
    return alphabet.index(x)