shi*_*ams 6 encryption perl sign
我正在尝试使用我的数据签名 Crypt::OpenSSL::RSA
perl.这是我的代码
use Crypt::OpenSSL::RSA;
open $privfh, '>:encoding(UTF-8)', 'private_key';
$rsa = Crypt::OpenSSL::RSA->generate_key(1024);
$key_string=$rsa->get_private_key_string();
print $privfh $key_string;
$rsa_priv = Crypt::OpenSSL::RSA->new_private_key($key_string);
$rsa_pub = $rsa->get_public_key_string();
$plaintext="hello";
$signature = $rsa_priv->sign($plaintext);
print "Signed correctly\n" if ($rsa->verify($plaintext, $signature));
Run Code Online (Sandbox Code Playgroud)
这个程序运行正常,我能够正确签名数据.但问题是我必须签署大量数据,所以我写的key_string
一个文件,以便我可以一次又一次地使用它,但问题是当我尝试再次使用它使用以下代码
use Crypt::OpenSSL::RSA;
open FILE ,'<','private_key';
{
local $/;
$keystring=<FILE>;
}
print "$keystring\n";
$rsa_priv = Crypt::OpenSSL::RSA->new_private_key($key_string);
Run Code Online (Sandbox Code Playgroud)
它抛出错误而不是生成$rsa_priv
.该程序给出的错误是
RSA.xs:178: OpenSSL error: no start line at testperl.pl line 11, <FILE> line 1
.我该怎么做才能在一次生成密钥后一次又一次地签名.
您正在将文件读入变量$keystring
,但使用该变量初始化私钥$key_string
。改成。$keystring
$key_string
Perluse strict;
可以避免此类问题。另外,如果您使用use warnings;
,perl 还会警告您有关访问未初始化变量的信息。
归档时间: |
|
查看次数: |
1194 次 |
最近记录: |