Nyt sitten edellä olleiden työkalujen esittelyn jälkeen itse salakirjoittamiseen ja sen purkamiseen.
A. Julkisen salakirjoitusavaimen muodostaminen
A1. Valitse kaksi suurta alkulukua
p ja
q
A2. Laske niiden tulo
m = pq
A3. Laske Eulerin funktion arvo
b = &phi(
m)=(
p-1)(
q-1)
A4. Valitse jokin kokonaisluku a &ge 2, jolla ei ole yhteistä tekijää luvun
b kanssa.
Luvut
m ja
a muodostavat sinulle lähetettävän viestin salausavaimen. Ne voidaan julkistaa vaikkapa lehdessä tai internetissä. Huomattavaa on, että julkistetun luvun
m perusteella ei voida saada selville lukua
b muutoin kuin löytämällä
m:n tekijät
p ja
q. Tämä on taas ylivoimainen tehtävä tehokkaimmillekin tietokoneille jos
p ja
q ovat kyllin suuria. (Kts. teksti 27. elokuuta alkuluvuista)
B. henkilökohtaisen purkuavaimen muodostaminen
B1. Määritä Eukleideen algoritmilla yhtälölle
ax - by = 1 jokin ratkaisu
x = t ja
y = u. (Kts. kirjoitukset 1. ja 10. syyskuuta)
- ratkaisu on olemassa, koska syt(
a,b) = 1
- ratkaisu
x = t toteuttaa yhtälön
at = 1
bu = 1 +
u&phi (
m)
Luku
t muodostaa purkuavaimen, jota ei anneta muilla vaan säilytetään tarkasti. Tämän purkuavaimen selvillesaaminen edellyttää yhtälön
ax - by = 1 ratkaisemista, mikä taas edellyttää luvun
b tuntemista, eikä tämä siis onnistu tietokoneellakaan, jos alun alkuluvut on valittu suuriksi.
C. Viestin salaaminen ja lähettäminen
C1. Lähettäjä kirjoittaa sanomansa luvuksi
s, missä 0 &le
s <
m
C2. Lähettäjä kryptaa sanomansa s luvuksi

- tämä onnistuu, koska luvut
a ja
m ovat julkisia
C3. Lähettäjä lähettää sinulle luvun
z.
D. Vastaanotetun sanoman purkaminen
D1. Saatuasi viestin
z laske potenssi

käyttämällä henkilökohtaista purkuavaintasi
t. Saat tulokseksi alkuperäisen sanoman s. Miksi? Siksi, että

ja Eulerin lauseen perusteella on

, joten
Seuraavalla kerralla vielä konkreettinen esimerkki yllä olevasta, tosin hyvin pienillä luvuilla, koska niilläkin siitä tulee käsin laskien aika työläs.