/ / Подписи на данни, използващи Perl - perl, цифров подпис, цифров сертификат

Подписи на данни, използващи Perl - perl, цифров подпис, цифров сертификат

Аз съм този проект, който включва изпращане на подписани данни.

На мен ми беше предоставено.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

Отговори:

1 за отговор № 1
  1. Прочети Сертификати за внос и частен ключ с копиране и поставяне

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

Късмет!


0 за отговор № 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, "");