perl和php md5文件校验和不匹配
我想得到二进制文件的校验和 运行php的perl和php md5文件校验和不匹配,php,perl,md5,Php,Perl,Md5,我想得到二进制文件的校验和 运行php的 $checksum =md5_file($fname) 对于perl use Digest::MD5; open FILE, "$fname"; $ctx = Digest::MD5->new; $ctx->addfile(*FILE); $checksum = $ctx->hexdigest; 我得到了不同的结果 有趣的是,在一个小的文本文件上运行它会返回与Perl相同的校验和,您是否确保文件句柄如建议的那样位于 在大多
$checksum =md5_file($fname)
对于perl
use Digest::MD5;
open FILE, "$fname";
$ctx = Digest::MD5->new;
$ctx->addfile(*FILE);
$checksum = $ctx->hexdigest;
我得到了不同的结果
有趣的是,在一个小的文本文件上运行它会返回与Perl相同的校验和,您是否确保文件句柄如建议的那样位于 在大多数情况下,在将$io_句柄作为参数传递给addfile方法之前,需要确保它处于binmode状态 我修改了文档中的示例以匹配您的示例:
use Digest::MD5;
open (my $fh, '<', $fname) or die "Can't open '$fname': $!";
binmode ($fh);
my $checksum = Digest::MD5->new->addfile($fh)->hexdigest;
对于Perl,您是否确保文件句柄如建议的那样位于中 在大多数情况下,在将$io_句柄作为参数传递给addfile方法之前,需要确保它处于binmode状态 我修改了文档中的示例以匹配您的示例:
use Digest::MD5;
open (my $fh, '<', $fname) or die "Can't open '$fname': $!";
binmode ($fh);
my $checksum = Digest::MD5->new->addfile($fh)->hexdigest;
您应该在打开文件后使用。如果您对该更改仍有不同意见,请查看PHP代码,因为更新的Perl代码会生成正确的输出:
$ perl dm.pl .bashrc
f5bb0773a3346814d978f9a155176d8e
$ md5sum .bashrc
f5bb0773a3346814d978f9a155176d8e *.bashrc
您应该在打开文件后使用。如果您对该更改仍有不同意见,请查看PHP代码,因为更新的Perl代码会生成正确的输出:
$ perl dm.pl .bashrc
f5bb0773a3346814d978f9a155176d8e
$ md5sum .bashrc
f5bb0773a3346814d978f9a155176d8e *.bashrc
您是否确认两个输入在进入各自语言的内部后是相同的,例如,在输入md5核心之前没有行结束翻译?您是否确认两个输入在进入各自语言的内部后是相同的,例如,在输入md5核心之前,没有行结束转换?