RSA bawie się w celach bardziej edukacyjnych ale stwierdziłem, że skoro liznąłem temat szyfrowania to dodam to do aplikacji nad którą sobie dłubie.
Modulus ma długość 640 znaków (podałem te liczby we wspomnianym wcześniej wątku). Dekodowanie odbywa się na podstawie algorytmu, który został opisany na tej stronie: http://eduinf.waw.pl/inf/alg/001_search/0067.php
a konkretnie:
Funkcja oblicza modulo potęgę podanej liczby
function pot_mod(a,w,n : integer) : integer;
var
pot,wyn,q : integer;
begin
// wykładnik w rozbieramy na sumę potęg 2. Dla reszt
// niezerowych tworzymy iloczyn potęg a modulo n.
pot := a; wyn := 1; q := w;
while q > 0 do
begin
if (q mod 2) = 1 then wyn := (wyn * pot) mod n;
pot := (pot * pot) mod n; // kolejna potęga
q := q div 2;
end;
pot_mod := wyn;
end;
Może faktycznie coś gdzieś namieszałem, muszę sprawdzić - chociaż funkcja mimo, że trwa długo to deszyfruje dane poprawnie.
Zapoznam się z tym TLS bo nie spotkałem się jeszcze z tym. A poniżej wrzucam klucze, których użyłem:
n:
3379633067208294961377042259124572111722991636377699224798124244740173570936209090053543861546567647483515247037085824784840949478369635457322559127209182678703736850102249014613990470410262165669798854627880160791153676354375533982153428751624087130971202264769136886841561134095365320753687539755895357847617923915707340577347224146386198552054001037287281040959444053318638627447124429894867112605854140029906927600687861900000451828874159051892697033965926723749568764005471780512562964222149091037255870318439498097537433529745662424142644198516618927207606308927904746556844820579528982932758132334243303657770430718753881676972436921
e:
65537
d:
1864349516742931286733665086807920038377120048674229215162832992356859409342154313329962787837298932808513156325919157475111079915461874640808720722150663229764019987078528891289708248249492977382855618970559565459672410054500796122303839382123988389241429958013667277172703467645786552281382014375649029058018094247689143189765636823809330738999625570758488391598713256430373612145788997975655399861337785160438363095085783341478663206566494667624147910309551744728293959630828549266643035905008654336554798427514932597074250576548660657673973597982202426396583468226431692654458805224361048129232616241331734864795773524177348962719103941