无法在未定义的值上调用方法“sign”

时间:2018-05-02 06:19:47

标签: perl openssl dsa

所以,我正在尝试使用DSA加密字符串。我创建了一个私钥和公钥。现在我想加密字符串“nawan”。这是我的代码:

#!/usr/bin/perl

use strict;
use warnings;
use Crypt::OpenSSL::DSA;

my $privkey = "priv_key.key";
my $pubkey = "pub_key.crt";
my $message = "nawan";

my $dsa_priv = Crypt::OpenSSL::DSA->read_priv_key($privkey);
my $sig      = $dsa_priv->sign($message);
my $dsa_pub  = Crypt::OpenSSL::DSA->read_pub_key($pubkey);
my $valid    = $dsa_pub->verify($message, $sig);

当我运行我的代码时,它会显示如下错误:

  

无法在./dsa.pl第13行的未定义值上调用方法“sign”。

有什么想法吗?我是Perl的新人。

更新

我刚发现原因无法调用方法“签名”,因为read_priv_key()无法读取文件。我刚刚意识到我用密码短语(aes128)创建了私钥。现在我想知道Crypt::OpenSSL::DSA如何读取带有密码的私钥。有什么建议吗?

0 个答案:

没有答案