Sto provando a firmare i miei dati usando Crypt::OpenSSL::RSA
in perl. Questo è il mio codiceFirma i dati usando Crypt :: OpenSSL :: RSA in perl
use Crypt::OpenSSL::RSA;
open $privfh, '>:encoding(UTF-8)', 'private_key';
$rsa = Crypt::OpenSSL::RSA->generate_key(1024);
$key_string=$rsa->get_private_key_string();
print $privfh $key_string;
$rsa_priv = Crypt::OpenSSL::RSA->new_private_key($key_string);
$rsa_pub = $rsa->get_public_key_string();
$plaintext="hello";
$signature = $rsa_priv->sign($plaintext);
print "Signed correctly\n" if ($rsa->verify($plaintext, $signature));
Questo programma funziona correttamente e sono in grado di firmare correttamente i dati. Ma il problema è che devo firmare un sacco di dati in modo che io sto scrivendo key_string
un file in modo che posso usare più e più volte, ma il problema è quando provo ad usare di nuovo usando seguente codice
use Crypt::OpenSSL::RSA;
open FILE ,'<','private_key';
{
local $/;
$keystring=<FILE>;
}
print "$keystring\n";
$rsa_priv = Crypt::OpenSSL::RSA->new_private_key($key_string);
sta generando un errore e non sta generando $rsa_priv
. L'errore fornito dal programma è RSA.xs:178: OpenSSL error: no start line at testperl.pl line 11, <FILE> line 1
. Cosa devo fare in modo che sia in grado di firmare ancora e ancora dopo aver generato la chiave per una sola volta.
Non è stato stampato nulla di nuovo usando 'use Data :: Dumper 'print Dumper $ keystring;'. È lo stesso della mia semplice dichiarazione di stampa in entrambi i codici. – shivams
Usa sempre 'usa strict; usare avvertenze; '. –
Potrebbe trattarsi di un carattere corrotto all'inizio del file. Spazio extra o linea. –