【问题标题】:Perl read file line by line output SHA256Perl逐行读取文件输出SHA256
【发布时间】:2020-04-08 13:41:24
【问题描述】:

我正在尝试逐行读取文本文件,然后在终端中打印出 SHA256 值。

#!/usr/bin/perl
use strict;
use warnings;

...

use Digest::SHA qw(sha256_hex);

while ( my $line = <$fh> ) {

    print $line;
    print sha256_hex($line), "\n";

    print "Next", "\n";

}
close $fh;

示例输出:

test
f2ca1bb6c7e907d06dafe4687e579fce76b37e4e93b7605022da52e6ccc26fd2
Next

当我尝试使用sha256_hex('test'); 而不是sha256_hex($line); 时,哈希值为9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08

我做错了什么?我是 perl 的新手,如果它是愚蠢的,请原谅。

谢谢。

【问题讨论】:

    标签: perl hash sha256 sha sha2


    【解决方案1】:

    如果您使用&lt;$fh&gt; 从文件中读取一行,则输入的行尾将包含在结果中。因此,您所做的是散列 test\n 而不是 test

    use Digest::SHA 'sha256_hex'; 
    print sha256_hex("test\n"),"\n"; # f2ca1bb6c7e907d06dafe4687e579fce76b37e4e93b7605022da52e6ccc26fd2
    print sha256_hex("test"),"\n";   # 9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08
    

    【讨论】:

    • 谢谢!chomp $line; 在打印 SHA256 哈希之前解决了它。
    猜你喜欢
    • 2013-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-04
    • 2015-05-12
    • 1970-01-01
    相关资源
    最近更新 更多