【问题标题】:Vigenere Cipher Incredibly ConfusedVigenere Cipher 令人难以置信的困惑
【发布时间】:2018-08-05 05:33:45
【问题描述】:

我已经坚持了好几个小时了。我一直在尝试使用预设的 vigenere 密钥加密预设消息。这样名字就可以说'bob'通过键'abc'移动它通过ascii值'abc'移动单词bob。

我现在有这段代码,但它没有打印任何东西,我对如何做到这一点感到非常困惑。

def vigenere(key, letter):

    keyVal = ord(key)
    letterVal = ord(letter)

    keyVal = keyVal - 97

    letterVal = keyVal + letterVal

    if letterVal >= ord("z"):
        letterVal = letterVal - 26

        print letterVal

【问题讨论】:

  • 你是怎么调用这个函数的?还是你没有的问题?
  • @tripleee 我以为我是通过将它们分配给 letterval / keyval 变量来调用它的。
  • 您没有在示例中的任何地方调用vignere(key, letter)...您只需要使用keyletter 参数调用它吗?

标签: python encryption vigenere


【解决方案1】:

您必须在循环中为字符串执行此操作,就像我在下面所做的那样:

def vigenere(key, letter):

    letterChar = ""
    for i in range(len(letter)):
        keyVal = ord(key)
        letterVal = ord(letter[i])
        keyVal = keyVal - 97
        letterChar += chr(keyVal + letterVal)
        if letterVal >= ord('z'):
            letterVal = letterVal - 26

    print letterChar


vigenere('c', "pop")

返回:

rqr

【讨论】:

  • 我如何用键打印一个短语?就像 ascii 键来移动短语中的单个字符,例如,如果短语是 cat 并且键是 abc。 c 会变成 d,a 会变成 c,t 会变成 w。把 cat 变成 dcw。
  • 你的意思是解密?
  • 当涉及到 python 时,我不是一个完整的菜鸟,它所做的只是创建一个加密短语,在单个字母上带有 ascii 移位谢谢你到目前为止的帮助
  • @SepZ 检查编辑后的答案,现在显示“pop”变为“rqr”,键为:“c”。这里 c = 2,因为你要从 c 中减去 97(即“a”)
  • 这里我没有使用'a',它不会起任何作用,因为'a'-'a'是0,所以'pop'和'pop'保持一致
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-21
  • 2022-01-17
  • 2019-06-05
  • 2018-02-26
  • 1970-01-01
相关资源
最近更新 更多