/ / Podpisy danych za pomocą Perl - perl, podpis cyfrowy, certyfikat cyfrowy

Podpisy danych za pomocą Perl - perl, podpis cyfrowy, certyfikat cyfrowy

Byłem tym projektem, który obejmuje wysyłanie podpisanych danych.

Dostarczono mi a.pem i certyfikat serwera, który mam zaimportować na inny serwer, z którego powinienem podpisać dane za pomocą tych plików, a następnie przesłać podpisane dane na inny serwer w celu weryfikacji i przetwarzania.

Moje pytania to:

  • Jak zaimportować te dwa pliki na mój serwer?
  • Jak używać perla do używania plików do podpisywania danych?

Zauważ, że mam zaimportować do Linuksa (Suse).

Właśnie to zrobiłem do tej pory Dodałem plik .pem do / etc / ssl Korzystam z poniższego kodu, aby odczytać z pliku .pem, a następnie podpisać dane

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

Dostaję błędy, gdy próbuję uruchomić skrypt jak poniżej Bareword znaleziono tam, gdzie operator oczekiwał na (eval 30) linii 4, w pobliżu "/ S2YUeaABL1sO3rk4HhjyDSMIJoc91n .....

Zauważyłem, że zawartość pliku .pem zawiera ukośniki w pliku, który powoduje ten problem. patrz próbka

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

Odpowiedzi:

1 dla odpowiedzi № 1
  1. Czytać Importuj certyfikaty i klucz prywatny za pomocą funkcji Kopiuj i Wklej

  2. RSA zaloguj się Perl (nietestowany kod):

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

Powodzenia!


0 dla odpowiedzi nr 2

Wielkie dzięki, że teraz działa. Użyłem twojego przykładu z drobnymi modyfikacjami jak poniżej

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