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