使用Perl的数据签名

时间:2012-06-14 12:14:34

标签: perl digital-signature digital-certificate

我一直是这个涉及发送签名数据的项目。

我已经提供了一个.pem文件和一个服务器证书,我应该将其导入到另一台服务器,我应该使用这些文件对数据进行签名,然后将签名的数据发送到另一台服务器进行验证和处理。

我的问题是:

  • 如何将这两个文件导入我的服务器?
  • 如何使用perl来使用文件对数据进行签名?

要注意,我要导入linux(Suse)。

这是我到目前为止所做的 我已将.pem文件添加到/ etc / ssl 我使用以下代码从.pem文件中读取然后签署数据

my $rsa = new Crypt::RSA;
my $file = 'path to file';
my $key = new Crypt::RSA::Key::Private(  Filename => $file , Password => "*****");
my $signature = $rsa->sign(Message => $data, Key => $key, Armour => 0);

我尝试运行脚本时遇到错误,如下所示 Bareword发现运营商预计在(eval 30)第4行,靠近“/ S2YUeaABL1sO3rk4HhjyDSMIJoc91n .....

我注意到.pem文件的内容在文件中有斜杠导致了这些问题。 见样本

-----BEGIN RSA PRIVATE KEY-----
MIICXAIBAAKBgQCMdoWd+LEk22TMaEihLqwl8tJtuFzndJ8dTGrLw6twjfAeV0sg
PsDQbVu5/S2YUeaABL1sO3rk4HhjyDSMIJoc91nfE3kYueRxEA9eL5JlxPDg2Z3s

2 个答案:

答案 0 :(得分:2)

  1. 阅读Import Certificates and Private Key with Copy and Paste

  2. RSA登录Perl(未经测试的代码):

    use Crypt::OpenSSL::RSA;
    use File::Slurp;
    
    my $keystring = read_file('private_key.pem');
    my $private_key = Crypt::OpenSSL::RSA->new_private_key($keystring);
    $private_key->use_md5_hash(); # use_sha1_hash is the default
    my $signature = $private_key->sign($plaintext);
    
  3. 祝你好运!

答案 1 :(得分:0)

非常感谢它现在正在运作。我使用了你的例子,稍作修改,如下所示

use File::Slurp   qw(read_file);
use MIME::Base64  qw(encode_base64);    
require Crypt::OpenSSL::RSA;
my $keystring = read_file( 'path to file name' );
my $privatekey = Crypt::OpenSSL::RSA->new_private_key($keystring);
$privatekey->use_pkcs1_padding();
my $signature = $privatekey->sign($datatosign);
print encode_base64($signature, '');
相关问题