Всем привет,
что-то возникла тут проблема при работе с RSA в perl. Не могу сгенерить ключ из компонент.
вот такой кусок кода выдает ошибку «OpenSSL error: d e not congruent to 1»
что может быть не так?
use Math::BigInt;
use Crypt::OpenSSL::RSA;
my $ii0 = new Math::BigInt("17020275177304234767533879672547310352609930388661630931257956125212863103740190543772285096141704300334940123243978043675764834422046684602491329861334406709308538083271349262737023295848735687163087607271553488928986964703422284327664327069875575966999339467958914835404940468776359238150220126176165784575511143360959382722301939824211657517616681066260470690512404929348371805528120371169314226740150467445252261748159181088512179750308016668138660697210946523502361190582619576629792463236481281820577870001213384569786473326530828498113903760101903403316741781963247616045011061351379129763173825422122924407163");
my $e = new Math::BigInt(0);
my $ii1 = new Math::BigInt("5005963287442421990451141080160973633120567761371067920958222389768489148158879571697730910629913029510276506836464130492872010124131377824262155841568943149796628848020985077275595087014334025636202237432809849684996166089241848331665978549963404696176276314105563186883806020228340952397123566522401701345660984119258145401173898506987191332703853562296599027577390712802892069948997061368029896708132580262650983527015335932839251927860144078927993092490716594990405433796009026408507901174602775257711132023477522206917181770398215531847037799023060781257453307870686360683949223395443154093008099011874321616153");;
my $ii2 = new Math::BigInt("151314805379455050442228514681358092878617369282411669121145746714347928596790591069121464391436671229257099514182229796122107845958797609294318622155429956868304659612919162499492133134214887530121214362379623410865651523194007134941701858386126006267055446053825059414876064340576006753576027020073406093933");
my $ii3 = new Math::BigInt("112482550102233307868456385773848893544961585169622327628130759104190839104739771448891113541063023322981818242124809120736615349624729190489165560587080143666678056063269724341373466108616958414238806759010185655402403783982888554892273385037370740774345089149088930304707637466296399093370261761676824818311");
my $i0 = Crypt::OpenSSL::Bignum->new_from_decimal($ii0->as_number());
my $i1 = Crypt::OpenSSL::Bignum->new_from_decimal($ii1->as_number());
my $i2 = Crypt::OpenSSL::Bignum->new_from_decimal($ii2->as_number());
my $i3 = Crypt::OpenSSL::Bignum->new_from_decimal($ii3->as_number());
my $rsa = Crypt::OpenSSL::RSA->new_key_from_parameters(
$i0,
Crypt::OpenSSL::Bignum->new_from_decimal($e->as_number()),
$i1,
$i2,
$i3
);
Я не сомневаюсь что тебе он нужен только расшифровки, но есть мнение (ну и если на текст ошибки смотреть), что єтот твой new_key_from_parameters генерирует новый ключ. Хотя документацию я не читал
вот именно, что не читал.
new_key - не значит создать новый ключ, это значит создать новый объект ключа по параметрам, тоесть пересоздает существующий ключ.
Так-то проблема решена путем вычисления публичной экспоненты, но странно, что питоновский класс позволяет создать только приватный ключ без публичного, а опенссл нет.