Perl:复杂数据结构的校验和
Perl: Checksum of complex data-structure
在 Perl 中有没有 package/function 可以简单地给我
- 一个简短的信息(例如一个数字,短字符串)
- 像 hashvalue/checksum(例如 MD5)
- 具有很好的区别(例如像 MDx、SHAx 这样的加密散列)
- 表示复杂数据结构的内容(例如哈希数组的哈希)。
我想到的最好的主意是
将我的结构序列化为字符串(例如使用 Data::Dumper)
用 MDx
散列字符串
但也许还有更优雅的方法。
我会考虑使用
我已经用它来解决类似的问题并且非常满意,
它很快,提供了我能想到的所有选项,
并没有花我很长时间就开始了。
例如,它允许您选择如何处理对象,
以及是否对散列键进行排序,这非常有用。
玩得开心!
过去,我使用 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) ) ;
}
剧情简介:
my $cplx_data_checksum = digest({
c => 1 ,
b => [ 1 , { a => 2 } ]
}) ;
要了解 Digest 算法的速度,请查看位于 https://metacpan.org/pod/Digest#Digest-speed
的 Digest Perl 模块
希望对您有所帮助
在 Perl 中有没有 package/function 可以简单地给我
- 一个简短的信息(例如一个数字,短字符串)
- 像 hashvalue/checksum(例如 MD5)
- 具有很好的区别(例如像 MDx、SHAx 这样的加密散列)
- 表示复杂数据结构的内容(例如哈希数组的哈希)。
我想到的最好的主意是
将我的结构序列化为字符串(例如使用 Data::Dumper)
用 MDx
散列字符串
但也许还有更优雅的方法。
我会考虑使用
我已经用它来解决类似的问题并且非常满意, 它很快,提供了我能想到的所有选项, 并没有花我很长时间就开始了。
例如,它允许您选择如何处理对象, 以及是否对散列键进行排序,这非常有用。
玩得开心!
过去,我使用 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) ) ;
}
剧情简介:
my $cplx_data_checksum = digest({
c => 1 ,
b => [ 1 , { a => 2 } ]
}) ;
要了解 Digest 算法的速度,请查看位于 https://metacpan.org/pod/Digest#Digest-speed
的 Digest Perl 模块希望对您有所帮助