2

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

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

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

我需要一些从块总和中制作 md5sum 的指令并获得与

md5sum filetohash.txt

我用 Perl 编码。

4

1 回答 1

5

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

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

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

print $md5->hexdigest, "\n";
于 2017-02-10T13:31:17.320 回答