解密中的模运算符

Modulo operator in decryption

我正在为 ascii 字符串创建一个 encryptor/decryptor,我在其中获取 char 的 ascii 值,将其加 1,然后 mod 它的最高 ascii 值,以便我得到有效的 ascii 字符输出。 解密有问题

假设 (a + b) % c = d 我知道 b、c 和 d 的值。 如何从中获取变量值?

这正是 ROT1 替换密码。减去 1,如果小于最低值(我假设为 0,考虑到您的描述方式),则加上最高值。

使用 "mod," 这样的术语虽然准确,但看起来比实际更复杂。这只是戒指上的加法。当你经过最后一个字母时,你会回到第一个字母和 vice-versa。一旦你了解了数学是如何工作的,方程式就会出现。基本上,您只需正常添加或减去(在这种情况下添加到加密,减去解密),最后,mod "normalizes" 您回到合法值的环上。

假设 c 是 2,d 是 0,b 是 4。

现在我们知道 a 必须 是 2... 或者实际上是 4.. 或者 6... 或者任何其他偶数。

你无法解决这个问题,有无数种解决方案。

使用逆公式

a = (b - d) mod c

或在实践中

a = (b - d + c) % c.

需要添加术语 + c 作为安全措施,因为 % 运算符不会在负数中实现真正的模数。