来自流的文件的MD5。 Perl的

时间:2017-02-10 10:02:29

标签: perl md5 md5-file

我需要获取文件的md5校验和。 但我没有磁盘上的文件,我无法将其保存到磁盘。 我只有一个流(套接字),我可以从中读取文件。

如何在这种情况下计算MD5校验和并使其与我为磁盘上的文件计算它相同?

我可以读取任何大小的流的块。 在这种情况下是否可以获得正确的MD5?

我需要从块的总和中获取一些make md5sum的指令并得到与

相同的结果
md5sum filetohash.txt

我用Perl编写代码。

1 个答案:

答案 0 :(得分:4)

在计算校验和之前,无需将数据收集到完整的文件中。您可以将数据分段添加到Digest::MD5对象中,如此

my $md5 = Digest::MD5->new;

while ( my $chunk = read_stream() ) {
    $md5->add($chunk);
}

print $md5->hexdigest, "\n";