Rešitev: Algoritem za zakrivanje z javnim ključem (Mathematica)

Iz MaFiRaWiki

(Razlika med različicami)
Različica od 19:01, 2 junij 2007
Korezr (Pogovor | prispevki)

← Prejšnja različica
Različica od 19:05, 2 junij 2007
Korezr (Pogovor | prispevki)

Naslednja različica →
Vrstica 1: Vrstica 1:
 +
 +== Implementacija ==
 +
'''Funkcija PretvoriVStevilo''' '''Funkcija PretvoriVStevilo'''
<pre> <pre>
-In[1]:= PretvoriVStevilo[s_String] := Fold[256#1 + #2 &, 0, ToCharacterCode[s]]+In[1]:= PretvoriVStevilo[s_String] := Fold[256#1 + #2 &, 0, ToCharacterCode[s]]
-In[2]:= PretvoriVStevilo["Janez Novak"]+In[2]:= PretvoriVStevilo["Janez Novak"]
-Out[2]:= 89920616654361488803651947+Out[2]:= 89920616654361488803651947
</pre> </pre>
'''Funkcija PretvoriVBesedilo''' '''Funkcija PretvoriVBesedilo'''
<pre> <pre>
-In[3]:= NarediTabelo[0] := {};+In[3]:= NarediTabelo[0] := {};
- NarediTabelo[n_Integer] := Append[NarediTabelo[Quotient[n, 256]], Mod[n, 256]]+ NarediTabelo[n_Integer] := Append[NarediTabelo[Quotient[n, 256]], Mod[n, 256]]
- PretvoriVBesedilo[n_Integer] := StringJoin[Map[FromCharacterCode, NarediTabelo[n]]]+ PretvoriVBesedilo[n_Integer] := StringJoin[Map[FromCharacterCode, NarediTabelo[n]]]
-In[6]:= PretvoriVBesedilo[89920616654361488803651947]+In[6]:= PretvoriVBesedilo[89920616654361488803651947]
-Out[6]:= Janez Novak+Out[6]:= Janez Novak
</pre> </pre>
'''Funkcija VelikoPrastevilo''' '''Funkcija VelikoPrastevilo'''
<pre> <pre>
-In[7]:= NajblizjePrastevilo[n_Integer] := Module[{m},+In[7]:= NajblizjePrastevilo[n_Integer] := Module[{m},
- If[EvenQ[n], m = n + 1, m = n];+ If[EvenQ[n], m = n + 1, m = n];
- While[! PrimeQ[m], m = m + 2];+ While[! PrimeQ[m], m = m + 2];
- m]+ m]
- VelikoPrastevilo[n_Integer] := + VelikoPrastevilo[n_Integer] :=
- NajblizjePrastevilo[Random[Integer, {10^(n - 1)), 10^(n)}]]+ NajblizjePrastevilo[Random[Integer, {10^(n - 1)), 10^(n)}]]
 +In[9]:= VelikoPrastevilo[10]
 +Out[9]:= 7404799921
</pre> </pre>
 +'''Funkciji Kodiraj in Dekodiraj'''
 +<pre>
 +In[10]:= Kodiraj[x_Integer] := PowerMod[x, e, n]
 +In[11]:= Dekodiraj[y_Integer] := PowerMod[y, d, n]
 +</pre>
 +
 +== Uporaba ==

Različica od 19:05, 2 junij 2007

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]

Uporaba

Osebna orodja