Perl 檢測 MD5 安全可靠用法

來源:互聯網
上載者:User

sub checkMD5()
 {
  my ( $md5val,$scan_file) = @_;
  if ( $md5val !~ /[0-9a-f]{32}/i) { die "invalid md5 value./n"; }
     if( ! -e $scan_file ) { print "No updateX file exist. /n"; return -1 ;}
  
        print "/n<<<<<<<<<<<<<<<<<<<<<< Checking MD5 >>>>>>>>>>>>>>>>>/n/n";
     print  "Check File :/t". $scan_file."/n";
  print "Has Known MD5 :/t".$md5val ."/n";
  
  open(FILE, $scan_file) or die "Can't open '$scan_file': $!";
        binmode( FILE );
        my $retdgt = Digest::MD5->new->addfile(*FILE)->hexdigest; #The returned string will be 32 bytes long.
        close FILE;
   
       if ( $retdgt !~ /[0-9a-f]{32}/i ) {die "Invalid md5 value from Digest::MD5./n"; }
       print  "Get MD5 as :/t $retdgt/n";
   
      if( $md5val =~ /^$retdgt$/i ){ print "[Success] Match MD5 ./n/n";return 1 ;}
      else{ print "[Error] dismatch MD5 value ./n";return 0; }
 }

 

另外,

 如果檔案太大,使用md5_hex()方法, 會有out of memory 的問題

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.