/ / Підписи даних за допомогою Perl-Perl, цифровий підпис, цифровий сертифікат

Підписи даних за допомогою Perl-Perl, цифровий підпис, цифровий сертифікат

Я був цим проектом, який передбачав надсилання підписаних даних.

Мені було надано a.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

Відповіді:

1 для відповіді № 1
  1. Читайте Імпортуйте сертифікати та приватний ключ із копіюванням та вставкою

  2. RSA Sign в 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, "");