math - XOR 和 mod 的交换性

标签 math bit-manipulation xor mod

因此,在探索哈希函数时,我注意到以下等式:

((129*N)^prev)%256 = ((129*N)%256)^prev

对于 0 到 255 之间的任何数字 N, prev。基本上你可以将 mod 操作拖出而不改变结果,它只适用于数字 129。有人可以告诉我这是怎么回事吗特价约129?

最佳答案

在使用模块化算法时,会发生这种情况

(a*b) mod m = ((a mod m) * (b mod m)) mod m

如果将此属性应用于 b = a

a^2 mod m = (a mod m)^2 mod m

并重复相同的 n

a^n mod m = (a mod m)^n mod m

因为这对 a 的任何值都有效,所以我们也得到

(a*b)^n mod m = (a*b mod m)^n mod m

因此,无论 m 是否为 256 以及 a 是否为 129,该属性都是有效的.

129 有一些特别之处,因为 1, 127, 129255 是唯一的余数 mod 256 这样 r * r = 1 mod 256。另请注意 255 = -1 (mod 256)127 = -129 mod 256

关于math - XOR 和 mod 的交换性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36464927/

相关文章:

python - 生成树分解的算法

javascript - 我的按位逻辑有什么缺陷?

r - 在 R 中查找对称差异(与交叉点相反)的函数?

java - 使用 Xor 进行编解码

python - 如何在 python 中交替地将 2 个字符添加到字符串中?

java - 求 n+1,n+2.... 的数字之和,当给出 n 的数字之和时

mysql - 如何使用mysql分解整数

c++ - 位移位 - 移动移位值

python - 将 numpy.array 向右旋转一位

java - 用于查找一组数字中重复出现的数字集的正则表达式