Math 异或与模的交换性
因此,在探索散列函数时,我注意到以下等式:Math 异或与模的交换性,math,bit-manipulation,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
((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
有一些非常特别的地方,因为1127229
和255
是唯一的剩余mod 256
,因此r*r=1 mod 256
。还请注意,255=-1(mod 256)
和127=-129 mod 256
如果将模乘256解释为按位和按255,或者换言之,仅保留最低有效8位,则更容易看出
很明显,XOR不会使信息从高位移动到低位(实际上,两个方向都没有移动),因此无论“向上”发生什么,都不会对低位产生任何影响。它可能会对高位产生影响(XOR可以设置高位,然后取决于and是第一位还是第二位,这些位分别保持设置或重置),但假设在这里不会发生这种情况
代数的,并且分布在XOR上,所以
(a ^ b) & c =
& distributes over ^
(a & c) ^ (b & c)
我们得到了b&c=b
,因为c
是255,b
在0到255之间,所以
(a & c) ^ (b & c) =
by assumptions
(a & c) ^ b
这与乘法无关,它可以是任何形式,我在这里把那部分称为a。异或与模2加法完全相同