我需要获取文件的 md5 校验和。但我在磁盘上没有文件,我无法将其保存到磁盘。我只有一个流(套接字),我可以从中读取文件。
在这种情况下如何计算 MD5 校验和并使其与我为磁盘上的文件计算它相同?
我可以读取任意大小的流块。对于这种情况,是否有可能获得正确的 MD5?
我需要一些从块的总和中制作 md5sum 的指令,并获得与相同的结果
md5sum filetohash.txt
Run Code Online (Sandbox Code Playgroud)
我用 Perl 编码。
在计算校验和之前,无需将数据收集到一个完整的文件中。您可以将数据分块添加到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)