首先,我们生成了一系列长度增加2的字符串前缀。例如,如果我们的秘密电子邮件地址为helloworld@company.com
,我们会生成:
他
地狱
hellow
hellowor
...
helloworld @ company.com
然后,对于每个前缀s,我们计算了以下哈希J:
md5(md5(e)+ s + md5(s))[其中+是字符串连接运算符,e =xyz @ gmail.com是您的电子邮件地址(当然已知!)]。
最后,我们连接所有哈希字符串J以形成上面的长哈希!
例如,对于helloworld @ company.com,
我们会计算:
md5(md5(' xyz@gmail.com') + 'he' + md5('he')) +
md5(md5(' xyz@gmail.com') + 'hell' + md5('hell')) +
md5(md5(' xyz@gmail.com') + 'hellow' + md5('hellow')) +
...
为简单起见,您可以假设我们的电子邮件地址仅包含字母数字字符和这4个字符:_。@ +
长哈希:
2ae5a25bbd70c46840c5ea35a178f655157d58b7c8d32f80889a2e61d84b19ca87a7f68bec10d70e7a321adf4bdbdcec77e44f4d3b435a6cc8caf20f8a2a7120c7c3e03a04e74edd6e85faa462ef61aa5555c7ae83c01e33f3619223c3d8cc920d3566a5bf47133af8b98a5186aab07be340a1149d7fedb8d266bf6de496719c44e0763bd5b65b877bac8d2a5255e2323082c5daa4a803554489ef738b1c2ac90b30947945114890567153736ec15f902f2eae9e754c747fe4bde0f6ed75711ca0a88703a6dee42fa56abbed9aded7644adbb3cc52207eba9b0419970300dae36e6e1422037295830f2e05f625b6b8c260007e2301821d1d47072693fcac2f8a3f07e29a9278ff2151454131d3b1024b52f646505ad66e1dce11cf641ab439c05a5f8e3a645383088a5adfa6e9a3e683f124157674cb75300e8b63c74c06e82c7dbe4cc728046a530f5da189ef0005d1b66520bc3591685430960225603f42d4486d4d1def5154c5038da072a492a619f10340b1dbafc7c25316832ce69b8aca882a7ed74540b64e281cd3f1ae4d1f8d19b10713ec3da2932e4b603988492e12765ff45947e6e02abc4677690b182bbfdfbd678a33a3ea6eb66d49d8e6417f82
另外,我们假设我们知道域名“@ company.com”。如何找出上述条件的电子邮件地址?
答案 0 :(得分:2)
大多数MD5破解是通过使用彩虹表完成的。但是大多数人最多不会达到32个字符。由于你在另一个md5上做md5,它不会受到其他字典攻击。因此,任何人都不可能将其恢复原状。
我不确定为什么哈希会越来越多。攻击者是否不会使用散列的最后32个字符并破解该散列,因为它是唯一包含完整秘密电子邮件地址的字符?
如果您是尝试构建此算法的人,我建议您改为使用支持良好的对称加密库,并将秘密电子邮件作为密码。建立自己的永远不是一个好主意。
您也可以在安全网站上询问:https://security.stackexchange.com/