如果x <b in =“”a ^( - 1)*(xb)=“”mod =“”m?=“”

时间:2017-10-11 11:58:28

标签: encryption

=“”

我正在尝试编写一个解密任何Affine cipher

的代码

现在,我发现解密功能是:

y = a^(-1) * (x-b) mod 26

问题是:当x小于b时,答案是否定的。

我知道这是一个数学问题而不是代码问题,但我希望有一些好人可以帮助我。

1 个答案:

答案 0 :(得分:1)

这实际上是一个跨越数学和编程的问题。

首先,数学家和程序员使用&#34; mod&#34;有点不同。

数学家将它用作关于他们刚写的等式的陈述。当他们说&#34; a = b + c mod m&#34;他们的意思是&#34; a = b + c&#34;以模数运算。

另一方面,程序员使用mod作为运算符,在整数除法后提供余数。

其次,有多种方法可以定义整数除法&#34; floored division&#34;,&#34; truncated division&#34;和&#34;欧几里德分部&#34;因此有多种方法来定义模运算符。

不幸的是,你的算法需要的是&#34;余下的分区&#34;但是你的编程语言给你的是截断分割后的剩余部分。

一种可能的解决方法是简单地添加if语句。

if (y < 0) y += 26