2016-06-29 12 views
0

Я пытаюсь создать открытый и закрытый ключ с защитой парольной фразы в Perl, но я не нашел ничего полезного.Как сгенерировать защищенные паролем ключи RSA в Perl

До сих пор я нашел эту ссылку http://search.cpan.org/~vipul/Crypt-RSA-1.57/lib/Crypt/RSA.pm, которая кажется очень перспективной. Тем не менее, я могу расшифровать мое сообщение без какой-либо фразы, хотя я создал их с кодовой фразой.

Другая ссылка была http://www.perlmonks.org/?node_id=903458, но когда я создаю свои ключи (чтобы хранить их в БД), я все еще могу расшифровать, не используя кодовую фразу.

Таким образом, мне нужна библиотека, которая позволяет мне шифровать текст с помощью закрытых ключей, используя кодовую фразу для обоих.

Благодарим за помощь!

PD: Пожалуйста, не шифруйте PGP.

UPDATE

Вот пайса кода, который не работает, как ожидалось:

use strict; 
use warnings; 
use Data::Dumper; 
use 5.010; 
use Crypt::RSA; 

my $rsa = new Crypt::RSA; 

my ($master_public, $master_private) = $rsa->keygen(
    Identity => "Someone", 
    Size  => 1024, 
    Password => "this is a password or passphare", 
) or die $rsa->errstr(); 

my $cyphertext = $rsa->encrypt (
    Message => "My Message that I want to encrypt", 
    Key  => $master_public, 
    Armour  => 1, 
) or die $rsa->errstr(); 

my $text = $rsa->decrypt (
    Cyphertext => $cyphertext, 
    Key  => $master_private, 
    Armour  => 1, 
    # Here I expect to add the user's passphrase 
) or die $rsa->errstr(); 

say $text; 
+0

Пожалуйста, добавьте фрагмент из * фактический код Perl *, который, по вашему мнению, демонстрирует способность «расшифровывать зашифрованный контент без фразы». Быть как * конкретным *, насколько это возможно. –

+0

Привет Майк, я добавил фрагмент, чтобы доказать свою точку зрения. Благодаря! – Ramzendo

ответ

2

Ключевая фраза для RSA используется только в отношении экономии или считывания ключа на диске. Ни при каких обстоятельствах вы не сохранили закрытый ключ на диске, так что он уже незашифрован в памяти.

Из ключевой документации частной, вы можете увидеть, как скрыть и сохранить его на диск (объект $ master_private у вас есть уже объект этого типа)

https://metacpan.org/pod/Crypt::RSA::Key::Private

+0

Спасибо Тим Том! наконец, я получил работу! – Ramzendo