解密中的模运算符
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
作为安全措施,因为 %
运算符不会在负数中实现真正的模数。
我正在为 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
作为安全措施,因为 %
运算符不会在负数中实现真正的模数。