Delphi, RSA i duze liczby.

Delphi, RSA i duze liczby.
A8
  • Rejestracja:ponad 21 lat
  • Ostatnio:prawie 18 lat
0

Potrzebuje uzyc szyfru RSA w mojej aplikacji, jednak nie moge znalezc nigdzie jakiegos wspanialego unitu, ktory pozwolil by mi operowac na dosc duzych liczbach. Co prawda stwoezylem pewien 'system' pozwalajacy liczyc na naprawde duzych liczbach, polegajacy na dzialaniach 'pisemnych', jednak jest on daleko za wolny :( I tu mam pytanko: czy ktos z Was ma moze jakis unit/biblioteke umozliwiajaca obliczenia na duzych liczbach (a najlepiej implementacje RSA w delphi/Dll :))?

PcSA
  • Rejestracja:ponad 21 lat
  • Ostatnio:prawie 13 lat
0

Zajrzyj tutaj może znajdziesz coś odpowiedniego dla siebie. Chociaż głowy nie daję sobie uciąć ;)

Qyon
  • Rejestracja:około 21 lat
  • Ostatnio:około 14 lat
0

Szukaj na 4p modułu vlong

// nota bene napisałem ten moduł właśnie po to, żeby rsa zaimplementować - Ł


JKM czy HGW?
A8
  • Rejestracja:ponad 21 lat
  • Ostatnio:prawie 18 lat
0

Dzieki wam.
A wie ktos moze jak sprawdzic czy dwie liczby sa wzglednie pierwsze? Probowalem rozlozyc je na dzielniki, ale to za dlugo trwa :(

Szymek
  • Rejestracja:ponad 22 lata
  • Ostatnio:prawie 3 lata
0
ali88 napisał(a)

A wie ktos moze jak sprawdzic czy dwie liczby sa wzglednie pierwsze? Probowalem rozlozyc je na dzielniki, ale to za dlugo trwa :(

I o to chodzi w RSA, że rozkład dużych liczb pierwszych troche długo trwa ;P.

ŁF
Moderator
  • Rejestracja:ponad 22 lata
  • Ostatnio:22 minuty
0

dwie liczby są względnie pierwsze, m.in. jeśli są pierwsze. do sprawdzania czy liczba jest pierwsza służą dwa algorytmy probabilistyczne, jeden sprawdza z p-wem 50%, drugi z 75%, poczytaj sobie o nich w jakiejś książce.

[dopisane]
a zresztą - tu masz implementację sprawdzania, czy liczba jest pierwsza z prawdopodobieństwem 50%

Kopiuj
function check(const n : verylongint) : boolean;
var
  K,v,X,u : verylongint;
  j       : integer;
begin
  for j := bits-1 downto 1 do if bitset(n,j) then break;
  repeat
    vrand(j,K);  {K < N}
  until vcomp(n,k) = 1;     {K losowe takie, ľe K < n}

  vshr(n,1,v);              {v = n/2}
  vmodexp(K,v,N,X);         {x = K^v mod n}


  longtovlong(1,v);         {v=1}
  vsub(n,v,u);              {u = n-1}

check := (vcomp(x,v) = 0) or (vcomp(x,u) = 0); {x=v lub x=u - pierwsza}

end;
</b>

Qyon
  • Rejestracja:około 21 lat
  • Ostatnio:około 14 lat
0

JKM czy HGW?

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.