我可能是个傻瓜,但我希望如果我们只有,就可以重新创建文件的精确副本
- 它的确切长度和类型
- 其中一些是起始字节(假设为100(
- 是md5和sha256签名
我不知道这是否可能,但到目前为止,我还没能在网上找到任何我所描述的内容。
旁注:我知道这样的过程在计算上会很昂贵,所以如果可能的话,我打算用小文件(1-3mb(来尝试
不幸的是,这并不实用,并且给出了您的"小文件(1-3mb(";,就性能而言,目前的计算机所能做的事情还远远不够。
一个简单的WolframAlpha查询来计算的时间
- 128字节的数据文件(256^128字节序列的可能组合(
- 当你能计算出十亿亿(10^9*10^9*10^ 9=10^9=10^27(每秒的消化量时
- 。。。几分钟、几小时、几天、几年
会接受,而你最终会得到。。。。
104639512420533918061369633697265801812637188643118516351928748864292094836419543226404181220298645272917277104799494647182156805890043320161890377915769569673513426178807170026816900622218240189631008834448226154239518944108944497601509840881752510934602407638356055074732660027707086602241835636794567108154296875年
或将缩短为。。。
5.7004475357125694689539104223396268823502567825415606695024×10^273
又名";某事某事;结尾有273个零年。
即使在达到正确的数字之前考虑运气和平均尝试次数,你也会达到一半,这仍然是。。。不幸的是,比我们宇宙预期的热死亡要大几个数量级。
您将需要对您选择的摘要算法进行有针对性的攻击,利用已知的弱点。SHA-1已经被称为";破碎的";就目标冲突而言,但相对而言,大多数其他SHA-x实现仍然是安全的。
现在,我选择了";十亿亿;作为一个相当慷慨的估计,你可以在一秒钟内计算出多少摘要。我不知道这是否准确,但273个零的结果应该告诉你,即使我偏离了一个数量级或十个,你仍然离那里很远。
根据2012年的这个答案,目前的计算机(当时(每秒可以计算1亿个SHA512哈希。如果我们将摩尔定律应用于此,并每18个月将性能提高一倍,我认为这是常态,那么我们今天可能会计算出1亿*2^(6([=64]个哈希,大约是每秒64亿个哈希。为了达到我们的目标(目标后面还有273个零(,我们还有10亿个哈希值。
即使拥有你所能想象的所有神奇的计算能力,你所要求的也是不可能的。如果你取一个1MB的文件并计算它的MD5和SHA256,那么你只剩下384位。我将忽略文件的前100个字节,你说你知道。你还剩下八百多万比特。减去384,仍然有超过800万个比特。
这意味着大约有2个8x106,(~102400000(不同的1MB文件,它们都映射到完全相同的MD5和SHA256签名。即使您可以计算所有这些文件,也无法确定其中哪一个是原始文件。