来自流的文件的 MD5。珀尔

Rom*_*juk 2 perl md5 md5-file

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

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

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

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

md5sum filetohash.txt
Run Code Online (Sandbox Code Playgroud)

我用 Perl 编码。

Bor*_*din 5

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

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

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

print $md5->hexdigest, "\n";
Run Code Online (Sandbox Code Playgroud)