Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/249.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
perl和php md5文件校验和不匹配_Php_Perl_Md5 - Fatal编程技术网

perl和php md5文件校验和不匹配

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相同的校验和,您是否确保文件句柄如建议的那样位于 在大多

我想得到二进制文件的校验和 运行php的

$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核心之前,没有行结束转换?