1

PHPを実行しているバイナリファイルのチェックサムを取得しようとしています

$checksum =md5_file($fname)

そしてperlの場合

 use Digest::MD5;
 open FILE, "$fname";
 $ctx = Digest::MD5->new;
 $ctx->addfile(*FILE);
 $checksum = $ctx->hexdigest;

小さなテキストファイルで実行すると、同じチェックサムが返されるほど興味深いさまざまな結果が得られます

4

2 に答える 2

3

Perlでは、ドキュメントが示すように、ファイルハンドルがbinmodeになっていることを確認しましたか?

ほとんどの場合、addfile()メソッドに引数として渡す前に、$io_handleがbinmodeになっていることを確認する必要があります。

ドキュメントの例を変更して、例に一致させました。

use Digest::MD5;
open (my $fh, '<', $fname) or die "Can't open '$fname': $!";
binmode ($fh);
my $checksum = Digest::MD5->new->addfile($fh)->hexdigest;
于 2013-02-04T20:15:42.877 に答える
2

binmode(FILE)ファイルを開いてから使用してください。その変更にまだ違いがある場合は、更新された Perl コードが正しい出力を生成するため、PHP コードを確認してください。

$ perl dm.pl .bashrc
f5bb0773a3346814d978f9a155176d8e

$ md5sum .bashrc
f5bb0773a3346814d978f9a155176d8e *.bashrc
于 2013-02-04T20:23:05.133 に答える