【问题标题】:MD5 hash with leading zeros带前导零的 MD5 哈希
【发布时间】:2015-12-07 10:37:42
【问题描述】:

你们有谁知道一个词,哪个 MD5 哈希有 12 个零? 所以,我正在寻找类似的东西:

md5_hex(word)="000000000000...".

谢谢。

【问题讨论】:

  • 投票结束;要求找到“异地资源”。根据定义,这个问题有数以千计的正确答案。
  • 未明确指定。你说的“词”是什么意思?一个英文单词,任何字母序列,还是别的什么?

标签: md5


【解决方案1】:

md5('j(R1wzR*y[^GxWJ5B>L{-HLETRD') = 0x00000000000003695b3ae70066f60d42

在 NVIDIA Tesla K40c 上通过 GPU 计算发现它

【讨论】:

    【解决方案2】:
    from hashlib import md5  
    from base64 import b64decode
    
    print md5(b64decode('Vf3ppC4Iu74AAAAAaHR0cDovL2hhc2hjYXQubmV0LwA=')).hexdigest()
    

    0000000000006c32a237fc882cc44a4b

    http://www.crysys.hu/hashgame/allrecord.php

    【讨论】:

    • 这很酷,但它们是由任何代码生成的,还是由大量的蛮力生成的?
    • 大量的蛮力。
    【解决方案3】:

    我能找到的最好结果是md5(jk8ssl),它给出一个零字节:

    00000000 18e6137a c2caab16 074784a6

    原来的结果是@delta14在this post找到的

    【讨论】:

    • 这是一个简单的字母数字文本字符串,特别令人满意
    【解决方案4】:

    加密散列函数(如 md5 是)的属性之一是:

    给定任何哈希t,很难找到m 的任何消息hash(m) = t
    换句话说:安全的加密哈希函数必须不可逆

    所以你所要求的并不是那么容易实现的。 (即使 md5 不再被认为是安全的)您可能必须自己进行暴力搜索:

    /* pseudo-code */
    desired = "00000000000000";
    
    while (!hash(m).equals(desired)) // try as long as a message with desired hash is found
        m = nextMessage(); // try next message
    
    print(m); 
    

    【讨论】:

    • 应该是 hash(m).ToString.StartWith("000000000000") 而不是简单的!=
    • 此外,您的代码只能找到能够迭代的数据类型,例如整数和字符,而不能找到复杂组合的数据类型,例如字符串。
    • 没错,但实际上应该只是伪代码。我已经编辑了我的帖子,以使代码更易于理解。
    猜你喜欢
    • 1970-01-01
    • 2012-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-21
    • 2016-06-24
    相关资源
    最近更新 更多