Perl:复杂数据结构的校验和

chr*_*s01 2 perl data-dumper

Perl中是否有一个包/函数可以让我轻松完成

  • 短信息(例如数字,短字符串)
  • 像哈希值/校验和(例如MD5)
  • 具有良好的区别(例如加密哈希,如MDx,SHAx)
  • 表示复杂数据结构的内容(例如散列数组的散列).

我想到的最好的主意是

  1. 将我的结构序列化为一个字符串(例如使用Data :: Dumper)

  2. 使用MDx对字符串进行哈希处理

但也许有一些更优雅的方式.

Han*_*bal 5

在过去,我使用Data :: Dumper(带有排序键,如@mob所指)+ Digest :: MD5方法来创建复杂数据结构的校验和.就我而言,目的是比较两个或多个数据结构的相等性.

(非常)简单片段:

use Data::Dumper qw( Dumper ) ;
use Digest::MD5 qw( md5_hex) ;

sub digest {
    my $data = shift ;
    local $Data::Dumper::SortKeys = 1;
    return md5_hex( Dumper($data) ) ;
}
Run Code Online (Sandbox Code Playgroud)

概要:

my $cplx_data_checksum = digest({ 
    c => 1 , 
    b => [ 1 , { a => 2 } ]
}) ;
Run Code Online (Sandbox Code Playgroud)

有关Digest algo速度的见解,请访问https://metacpan.org/pod/Digest#Digest-speed查看Digest Perl模块.

希望这可以帮助