【问题标题】:Data signatures using Perl使用 Perl 的数据签名
【发布时间】:2012-06-17 11:18:48
【问题描述】:

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

我已经获得了一个 .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);

当我尝试运行如下脚本时出现错误 在(eval 30)第 4 行,“/S2YUeaABL1sO3rk4HhjyDSMIJoc91n .....

附近找到操作员预期的裸字

我注意到 .pem 文件的内容在导致这些问题的文件中有斜线。 查看示例

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

【问题讨论】:

  • 我的问题是:你累了什么?您在哪里遇到问题?
  • 查看我迄今为止所做的修改

标签: perl digital-signature digital-certificate


【解决方案1】:
  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);
    

祝你好运!

【讨论】:

    【解决方案2】:

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

    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, '');
    

    【讨论】:

      猜你喜欢
      • 2015-02-26
      • 2012-07-16
      • 2018-03-09
      • 1970-01-01
      • 1970-01-01
      • 2017-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多