簡體   English   中英

Perl:復雜數據結構的校驗和

[英]Perl: Checksum of complex data-structure

Perl 中是否有一個包/函數可以讓我以一種簡單的方式

  • 一個簡短的信息(例如一個數字、短字符串)
  • 像哈希值/校驗和(例如 MD5)
  • 有很好的區別(例如像 MDx、SHAx 這樣的加密哈希)
  • 表示復雜數據結構的內容(例如散列數組的散列)。

我想到的最好的主意是

  1. 將我的結構序列化為字符串(例如使用 Data::Dumper)

  2. 使用 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 模塊

希望這可以幫助

我會考慮使用

序列編碼器

我已經將它用於類似的問題,並且對它非常滿意,它速度很快,提供了我能想到的所有選項,而且我根本沒有花很長時間就開始使用它。

例如,它允許您選擇如何處理對象,以及是否對哈希鍵進行排序,這非常有用。

玩得開心!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM