Hash 如何生成散列到自身的MD5散列值?
是否可以生成一个文本文件,其内容是文件的hash/md5值Hash 如何生成散列到自身的MD5散列值?,hash,md5sum,Hash,Md5sum,是否可以生成一个文本文件,其内容是文件的hash/md5值 如何编写程序?如果存在这样的文件,可以通过尝试每个可能的MD5哈希并检查其MD5哈希是否等于它来生成该文件。但由于所有可能的MD5哈希都是有限集,这样一个特殊的MD5值可能根本不存在 注意:您只询问是否可能,而不是询问需要多长时间。如果存在这样的文件,可以通过尝试每个可能的MD5哈希并检查其MD5哈希是否等于它来生成它。但由于所有可能的MD5哈希都是有限集,这样一个特殊的MD5值可能根本不存在 注意:您只询问是否可能,而不是询问需要多长
如何编写程序?如果存在这样的文件,可以通过尝试每个可能的MD5哈希并检查其MD5哈希是否等于它来生成该文件。但由于所有可能的MD5哈希都是有限集,这样一个特殊的MD5值可能根本不存在
注意:您只询问是否可能,而不是询问需要多长时间。如果存在这样的文件,可以通过尝试每个可能的MD5哈希并检查其MD5哈希是否等于它来生成它。但由于所有可能的MD5哈希都是有限集,这样一个特殊的MD5值可能根本不存在
注意:您只询问是否可能,而不是询问需要多长时间。我也感兴趣,因此我编写了以下pascal程序:
program hash;
uses md5;
var a, b: string;
begin
b:='d41d8cd98f00b204e9800998ecf8427e'; //md5sum of /dev/null
repeat
a:=md5Print(md5String(b));
b:=md5Print(md5String(a));
until a=b;
writeln(a);
writeln(b);
end.
它已经运行了大约五天,但仍然没有结果。)我也很感兴趣,所以我编写了以下pascal程序:
program hash;
uses md5;
var a, b: string;
begin
b:='d41d8cd98f00b204e9800998ecf8427e'; //md5sum of /dev/null
repeat
a:=md5Print(md5String(b));
b:=md5Print(md5String(a));
until a=b;
writeln(a);
writeln(b);
end.
它已经运行了大约五天,但仍然没有结果。)请注意,如果你想强行使用它,三甲氧基的方法从根本上是有缺陷的。每个散列有效地指向另一个随机散列,并且随着散列序列的增加,任何新访问的散列都越来越可能简单地将您指向先前访问的散列,形成数百万或数十亿个散列的循环 如果我们假设MD5的整个散列空间不是一个单一的循环循环(这是极不可能的),那么几乎所有的值都处于一个竞争性的短循环中,这使得绝大多数MD5散列无法访问
基本上,即使存在自映射散列,这种方法仍然更可能将自身置于无限循环中,而不是实际找到无限循环。请注意,如果您希望对其进行暴力,三甲氧基的方法从根本上是有缺陷的。每个散列有效地指向另一个随机散列,并且随着散列序列的增加,任何新访问的散列都越来越可能简单地将您指向先前访问的散列,形成数百万或数十亿个散列的循环 如果我们假设MD5的整个散列空间不是一个单一的循环循环(这是极不可能的),那么几乎所有的值都处于一个竞争性的短循环中,这使得绝大多数MD5散列无法访问
基本上,即使存在自映射散列,这种方法仍然更可能将自身置于无限循环中,而不是实际找到无限循环。我同意@satuon的观点,这里有一个例子。我所期望的是计算给定函数f(x)的md5中的x(f(x))==x。除了暴力,似乎没有更好的方法了。我同意@satuon,这里有一个例子。我所期望的是计算给定函数f(x)的md5中的x(f(x))==x。看来没有比暴力更好的办法了。