如何在Perl中计算wav文件的MD5哈希值?

8 perl md5

我有一个wav文件,我需要计算其内容的MD5哈希值.我怎么能用Perl做到这一点?

小智 19

它有模块:Digest :: MD5 :: File.有了它,代码被简化为:

use Digest::MD5::File qw( file_md5_hex );
my $md5 = file_md5_hex( $some_file_name );
Run Code Online (Sandbox Code Playgroud)


JB.*_*JB. 12

你当然可以.如果要散列文件的特定部分(例如,跳过元数据),只需查找散列部分的Digest :: MD5以及任何与WAV相关的模块.


Xet*_*ius 9

使用摘要:: MD5

use Digest::MD5 qw(md5);
my $hash;
{
    local $/ = undef;
    open FILE, "$wav_file_name";
    binmode FILE;
    my $data = <FILE>;
    close FILE;
    $hash = md5($data);
}
Run Code Online (Sandbox Code Playgroud)

或者您可以使用OO界面:

use Digest::MD5;

open FILE, "$wav_file_name";

my $ctx = Digest::MD5->new;
$ctx->addfile (*FILE);
my $hash = $ctx->digest;
close (FILE);
Run Code Online (Sandbox Code Playgroud)

  • 或者根本不要玷污整个文件...... WAV文件可能很大而Digest :: MD5会从文件句柄中读取:打开我的$ fh,'<',$ thewav或者死掉"无法打开$ thewav: $\N"!; print Digest :: MD% - > new-> add_file($ fh) - > hexdigest; (5认同)
  • 使用 File::Slurp 进行 slurp 效果要好得多: (2认同)