Vigenere密码不起作用

时间:2015-08-20 18:50:45

标签: python encryption vigenere

所以我的老师创造了这个vigenere密码,他说它正在工作。 但是,在使用在线vigenere密码检查其结果后,似乎没有正确的加密结果。

我不知道如何修复它,我想知道是否有人可以指导我解决错误,并告诉我如何解决它们。

这是代码

base = ord("a")
alphabets = 'abcdefghijklmnopqrstuvwxyz'  
keyword = input('What is your keyword')
message = input('What is your message to be coded or encoded?').lower()

expandedKeyword = ""
while len(expandedKeyword) < len(message): 
    for i in keyword:
        if len(expandedKeyword) < len(message): 
            expandedKeyword += i 


cipheredMessage = '' 
indexofKeyword = 0
for i in message:
        if i == ' ':
            cipheredMessage = cipheredMessage + " "
        else:
            shiftedIndex = (ord(i) + ord(expandedKeyword[indexofKeyword])-base) % 26 +base
            cipheredMessage = cipheredMessage + chr(shiftedIndex)
            indexofKeyword = indexofKeyword + 1



print(cipheredMessage)

我理解发生了什么的概念,但我似乎无法弄清楚错误。

1 个答案:

答案 0 :(得分:1)

您对shiftedIndex的计算错误,您需要减去base两次,但您目前只减去它一次。示例 -

shiftedIndex = (ord(i) + ord(expandedKeyword[indexofKeyword])-2*base) % 26 +base

这是因为您需要首先从base减去ord(i)以获取i的索引(来自'a'),并且第二次从ord(expandedKeyword[indexofKeyword])减去'a'获取该角色的索引(来自shiftedIndex = ((ord(i) - base) + (ord(expandedKeyword[indexofKeyword])-base)) % 26 + base )。所以看起来应该是(为了更好地理解) -

{
  "aggs": {
    "types": {
      "terms": {
        "field": "type"
      },
      "aggs": {
        "groups": {
          "top_hits": {
            "size": 10
          }
        }
      }
    }
  }
}