Vigenere 解密和取模

Posted

技术标签:

【中文标题】Vigenere 解密和取模【英文标题】:Vigenere decryption and modulo 【发布时间】:2017-03-16 12:52:51 【问题描述】:

我正在查看***上的 Vigenère 加密/解密算法,我想知道哪种方法是最有效/正确的:

return a % b

和:

if a < 0    
    return a += b
else 
    return a

当: -b &lt;= a &lt;= b

或者编译后可能是等价的?

谢谢你赐教:)

【问题讨论】:

【参考方案1】:

IMO,这种纳米优化没什么意义,因为您需要数百万个字符的文本才能有任何可察觉的差异。

与其他操作相比,模运算和条件分支都“昂贵”,并且它们非常依赖于处理器架构。因此,唯一知道的方法是进行基准测试,充分注意在现实条件下获得可重现的结果(这有点矛盾)。

这就是说,请注意 % 不会为负参数实现真正的模运算,如果您假设如此,您将得到错误的结果。

【讨论】:

好吧,反正我不是在寻找优化,因为我知道它只会对我的代码产生很小的影响。但是你所说的% 实现是我所期待的。所以这显然取决于语言。我在 Haskell 中尝试过,% 似乎产生了预期的结果,但我会保留if statement 谢谢:) @MathersMax:或者,(a + c) % b 也可以,其中c 是一个精心挑选的常数。

以上是关于Vigenere 解密和取模的主要内容,如果未能解决你的问题,请参考以下文章

Vigenere Cipher - 解密(手动)

Vigenere Cipher - 解密(手动)

Vigenere 密码解密问题

用于解密的 Vigenere 密码“字符串索引超出范围”

使用修改后的 Vigenere 密码算法,解密不会导致原始输入 [关闭]

python 简单的加密/解密算法(Vigenere密码)