Rešitev: Algoritem za zakrivanje z javnim ključem (Mathematica)
Iz MaFiRaWiki
Implementacija
Funkcija PretvoriVStevilo
In[1]:= PretvoriVStevilo[s_String] := Fold[256#1 + #2 &, 0, ToCharacterCode[s]] In[2]:= PretvoriVStevilo["Janez Novak"] Out[2]:= 89920616654361488803651947
Funkcija PretvoriVBesedilo
In[3]:= NarediTabelo[0] := {}; NarediTabelo[n_Integer] := Append[NarediTabelo[Quotient[n, 256]], Mod[n, 256]] PretvoriVBesedilo[n_Integer] := StringJoin[Map[FromCharacterCode, NarediTabelo[n]]] In[6]:= PretvoriVBesedilo[89920616654361488803651947] Out[6]:= Janez Novak
Funkcija VelikoPrastevilo
In[7]:= NajblizjePrastevilo[n_Integer] := Module[{m}, If[EvenQ[n], m = n + 1, m = n]; While[! PrimeQ[m], m = m + 2]; m] VelikoPrastevilo[n_Integer] := NajblizjePrastevilo[Random[Integer, {10^(n - 1)), 10^(n)}]] In[9]:= VelikoPrastevilo[10] Out[9]:= 7404799921
Funkciji Kodiraj in Dekodiraj
In[10]:= Kodiraj[x_Integer] := PowerMod[x, e, n] In[11]:= Dekodiraj[y_Integer] := PowerMod[y, d, n]
Delovanje
In[11]:= p = 1951851851; q = 5651564047; n = p*q;