【问题标题】:Hash functions violating some pre image properties [closed]哈希函数违反了一些预映像属性 [关闭]
【发布时间】:2016-08-15 09:00:49
【问题描述】:

假设 H(xy) = H(x) * H(y) 。显然违反了原像属性。我们如何找到 x, y 使得 H(x) = H(y) mod (2^k)

【问题讨论】:

  • x=y 将是一个显而易见的解决方案。
  • 我投票结束这个问题,因为它不是与编程直接相关的问题。
  • @PhiterFernandes 并非所有的标签都与编程直接相关。此类标签和此类问题的理由是,这些主题显然与编程间接相关。计算机编程没有明确的界限。
  • 我知道,但这有点像数学问题。
  • 请访问 crypto.stackexchange.com 了解此类问题。然而,更多的背景知识可能有助于将其与基本的家庭作业问题区分开来。

标签: hash cryptography hash-collision


【解决方案1】:

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,yH(x) = H(y) = 0H(x) = H(y) = 1。既然是功课,那我就留给你吧。

【讨论】:

    猜你喜欢
    • 2013-07-29
    • 1970-01-01
    • 2010-10-27
    • 2016-04-17
    • 1970-01-01
    • 2017-11-04
    • 2011-05-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多