我需要获取文件的md5校验和。 但我没有磁盘上的文件,我无法将其保存到磁盘。 我只有一个流(套接字),我可以从中读取文件。
如何在这种情况下计算MD5校验和并使其与我为磁盘上的文件计算它相同?
我可以读取任何大小的流的块。 在这种情况下是否可以获得正确的MD5?
我需要从块的总和中获取一些make md5sum的指令并得到与
相同的结果md5sum filetohash.txt
我用Perl编写代码。
答案 0 :(得分:4)
在计算校验和之前,无需将数据收集到完整的文件中。您可以将数据分段添加到Digest::MD5
对象中,如此
my $md5 = Digest::MD5->new;
while ( my $chunk = read_stream() ) {
$md5->add($chunk);
}
print $md5->hexdigest, "\n";