假设 H(xy)= H(x)* H(y)。显然,违反了preimage属性。我们怎样才能找到x,y这样 H(x)= H(y)mod(2 ^ k)
答案 0 :(得分:0)
2^k
是一个非常特殊的模数。你可以证明欧拉定理的以下强化版本:
假设x
是任何正整数。然后x^phi(2^k) (mod 2^k)
等于0或1,当且仅当x
为奇数时才为1。
证明:
如果x
为奇数,则为gcd(x,2^k) = 1
,因此欧拉定理为x^phi(2^k) (mod 2^k) = 1
。
假设x
是偶数。如果x = 0
,结果很简单,所以假设x > 0
。写x = (2^s)*y
y
为奇数和s > 0
。注意
phi(2 ^ k)`= 2 ^(k-1)
但是,
x^phi(2^k) = (2^s*y)^phi(2^k)
= (2^s)^phi(2^k) * y^phi(2^k)
= 2^(s*phi(2^k)) * y^phi(2^k)
= 2^(s*2^(k-1)) * y^phi(2^k)
= 0 * y^phi(2^k) = 0 (mod 2^k)
最后一行是因为s*2^(k-1) >= k
因此2^(s*2^(k-1))
是2^k
的倍数。
请注意,如果x
是偶数,那么您实际上拥有x^k = 0 (mod 2^k)
,因此将x
提升为权力phi(2^k)
对于除了最小k
以外的任何人都是过度的
鉴于此引理,现在可以看到存在与x
或y
不同的H(x) = H(y) = 0
,H(x) = H(y) = 1
。由于它似乎是家庭作业,我会把细节留给你。