logo

RSA šifravimo algoritmas

RSA šifravimo algoritmas yra viešojo rakto šifravimo algoritmo tipas. Norėdami geriau suprasti RSA, pirmiausia supraskite, kas yra viešojo rakto šifravimo algoritmas.

Viešojo rakto šifravimo algoritmas:

Viešojo rakto šifravimo algoritmas taip pat vadinamas asimetriniu algoritmu. Asimetriniai algoritmai yra tie algoritmai, kuriuose siuntėjas ir gavėjas naudoja skirtingus šifravimo ir iššifravimo raktus. Kiekvienam siuntėjui priskiriama raktų pora:

    Viešasis raktas Privatus raktas

The Viešasis raktas naudojamas šifravimui, ir Privatus raktas naudojamas iššifruoti. Iššifruoti negalima naudojant viešąjį raktą. Du raktai yra susieti, bet privatus raktas negali būti gautas iš viešojo rakto. Viešasis raktas yra gerai žinomas, tačiau privatus raktas yra slaptas ir jį žino tik vartotojas, kuriam priklauso raktas. Tai reiškia, kad kiekvienas gali siųsti žinutę vartotojui naudodamas vartotojo viešąjį raktą. Tačiau tik vartotojas gali iššifruoti pranešimą naudodamas savo privatų raktą.

Viešojo rakto algoritmas veikia taip:

RSA šifravimo algoritmas
  • Siunčiami duomenys yra užšifruoti siuntėjo A naudojant numatyto imtuvo viešąjį raktą
  • B iššifruoja gautą šifruotą tekstą naudodamas savo privatų raktą, kurį žino tik B. B atsako A užšifruodama savo pranešimą naudodama A viešąjį raktą.
  • A iššifruoja gautą šifruotą tekstą naudodamas savo privatų raktą, kuris yra žinomas tik jam.

RSA šifravimo algoritmas:

RSA yra labiausiai paplitęs viešojo rakto algoritmas, pavadintas jo išradėjų vardu Rivestas, Shamiras ir Adelmanas (RSA).

RSA šifravimo algoritmas

RSA algoritmas naudoja šią procedūrą viešiesiems ir privačiiesiems raktams generuoti:

  • Pasirinkite du didelius pirminius skaičius p ir q .
  • Padauginkite šiuos skaičius, kad rastumėte n = p x q, kur n vadinamas šifravimo ir iššifravimo moduliu.
  • Pasirinkite skaičių tai yra mažiau nei n , kad n yra santykinai pirminis (p - 1) x (q -1). Tai reiškia kad tai yra ir (p – 1) x (q – 1) neturi bendro koeficiento, išskyrus 1. Pasirinkite „e“, kad 1 gcd (e,d(n)) =1
  • Jeigu n = p x q, tada viešasis raktas yra . Paprasto teksto žinutė m yra užšifruotas naudojant viešąjį raktą. Norėdami rasti šifruotą tekstą iš paprasto teksto, ši formulė naudojama norint gauti šifruotą tekstą C.
    C = mtai yraprieš n
    Čia , m turi būti mažesnis nei n . Didesnis pranešimas (>n) yra traktuojamas kaip pranešimų, kurių kiekvienas yra užšifruotas atskirai, junginys.
  • Norėdami nustatyti privatųjį raktą, naudojame šią formulę, kad apskaičiuotume d taip, kad:
    Dtai yramod {(p - 1) x (q - 1)} = 1
    Arba
    Dtai yramod φ (n) = 1
  • Privatus raktas yra . Šifruota žinutė c iššifruojamas naudojant privatų raktą. Norėdami apskaičiuoti paprastą tekstą m iš šifruoto teksto c paprastam tekstui gauti naudojama ši formulė.
    m = cdprieš n

Paimkime RSA šifravimo algoritmo pavyzdį:

1 pavyzdys:

Šiame pavyzdyje parodyta, kaip galime užšifruoti paprastą tekstą 9 naudodami RSA viešojo rakto šifravimo algoritmą. Šiame pavyzdyje naudojami pirminiai skaičiai 7 ir 11 viešiesiems ir privatiesiems raktams generuoti.

Paaiškinimas:

1 žingsnis: Pasirinkite du didelius pirminius skaičius p ir q .

p = 7

q = 11

2 žingsnis: Padauginkite šiuos skaičius, kad rastumėte n = p x q, kur n vadinamas šifravimo ir iššifravimo moduliu.

Pirmiausia apskaičiuojame

n = p x q

rasti mano iphone iš android

n = 7 x 11

n = 77

3 veiksmas: Pasirinkite skaičių tai yra mažiau tai n , kad n yra santykinai pirminis (p - 1) x (q -1). Tai reiškia kad tai yra ir (p – 1) x (q – 1) neturi bendro koeficiento, išskyrus 1. Pasirinkite „e“, kad 1

Antra, mes apskaičiuojame

φ (n) = (p - 1) x (q-1)

φ (n) = (7–1) x (11–1)

φ (n) = 6 x 10

φ (n) = 60

Dabar pasirinkime santykinį pirminį e iš 60 kaip 7.

Taigi viešasis raktas yra = (7, 77)

4 veiksmas: Paprasto teksto žinutė m yra užšifruotas naudojant viešąjį raktą. Norėdami rasti šifruotą tekstą iš paprasto teksto, ši formulė naudojama norint gauti šifruotą tekstą C.

Norėdami rasti šifruotą tekstą iš paprasto teksto, ši formulė naudojama norint gauti šifruotą tekstą C.

C = mtai yraprieš n

C = 97prieš 77

C = 37

5 veiksmas: Privatus raktas yra . Norėdami nustatyti privatųjį raktą, naudojame šią formulę d, kad:

Dtai yramod {(p - 1) x (q - 1)} = 1

7d mod 60 = 1, tai suteikia d = 43

Privatus raktas yra = (43, 77)

6 veiksmas: Šifruota žinutė c iššifruojamas naudojant privatų raktą. Norėdami apskaičiuoti paprastą tekstą m iš šifruoto teksto c paprastam tekstui gauti naudojama ši formulė.

m = cdprieš n

m = 3743prieš 77

m = 9

Šiame pavyzdyje paprastas tekstas = 9 ir šifruotas tekstas = 37

2 pavyzdys:

RSA kriptosistemoje tam tikras A naudoja du pirminius skaičius 13 ir 17, kad generuotų viešąjį ir privatųjį raktus. Jei viešasis A yra 35. Tada A privatusis raktas yra ……………?.

Paaiškinimas:

1 žingsnis: pirmame veiksme pasirinkite du didelius pirminius skaičius, p ir q .

darbas kompiuteriu

p = 13

q = 17

2 žingsnis: Padauginkite šiuos skaičius, kad rastumėte n = p x q, kur n vadinamas šifravimo ir iššifravimo moduliu.

Pirmiausia apskaičiuojame

n = p x q

n = 13 x 17

n = 221

3 veiksmas: Pasirinkite skaičių tai yra mažiau tai n , kad n yra santykinai pirminis (p - 1) x (q -1). Tai reiškia kad tai yra ir (p – 1) x (q – 1) neturi bendro koeficiento, išskyrus 1. Pasirinkite „e“, kad 1

Antra, mes apskaičiuojame

φ (n) = (p - 1) x (q-1)

φ (n) = (13 - 1) x (17 - 1)

φ (n) = 12 x 16

φ (n) = 192

g.c.d (35, 192) = 1

3 veiksmas: Norėdami nustatyti privatųjį raktą, naudojame šią formulę d apskaičiuoti taip, kad:

Apskaičiuokite d = dtai yramod φ (n) = 1

d = d x 35 mod 192 = 1

d = (1 + k.φ (n))/e [tegul k = 0, 1, 2, 3………………]

Įdėkite k = 0

d = (1 + 0 x 192)/35

d = 1/35

Įdėkite k = 1

d = (1 + 1 x 192)/35

d = 193/35

Įdėkite k = 2

string to char

d = (1 + 2 x 192)/35

d = 385/35

d = 11

Privatus raktas yra = (11, 221)

Taigi privatus raktas, ty d = 11

3 pavyzdys:

RSA kriptosistema naudoja du pirminius skaičius 3 ir 13, kad generuotų viešąjį raktą = 3 ir privatųjį raktą = 7. Kokia yra šifruoto teksto reikšmė paprastam tekstui?

Paaiškinimas:

1 žingsnis: Pirmame žingsnyje pasirinkite du didelius pirminius skaičius, p ir q .

p = 3

q = 13

2 žingsnis: Padauginkite šiuos skaičius, kad rastumėte n = p x q, kur n vadinamas šifravimo ir iššifravimo moduliu.

Pirmiausia apskaičiuojame

n = p x q

n = 3 x 13

n = 39

3 veiksmas: Jeigu n = p x q, tada viešasis raktas yra . Paprasto teksto žinutė m yra užšifruotas naudojant viešąjį raktą. Taigi viešasis raktas yra = (3, 39).

Norėdami rasti šifruotą tekstą iš paprasto teksto, ši formulė naudojama norint gauti šifruotą tekstą C.

C = mtai yraprieš n

C = 53prieš 39

C = 125 prieš 39

C = 8

Taigi šifruotas tekstas, sukurtas iš paprasto teksto, C = 8.

4 pavyzdys:

RSA kriptosistema naudoja du pirminius skaičius, 3 ir 11, kad generuotų privatųjį raktą = 7. Kokia yra šifruoto teksto reikšmė paprasto teksto 5, naudojant RSA viešojo rakto šifravimo algoritmą?

java elseif

Paaiškinimas:

1 žingsnis: pirmame žingsnyje pasirinkite du didelius pirminius skaičius, p ir q .

p = 3

q = 11

2 žingsnis: Padauginkite šiuos skaičius, kad rastumėte n = p x q, kur n vadinamas šifravimo ir iššifravimo moduliu.

Pirmiausia apskaičiuojame

n = p x q

n = 3 x 11

n = 33

3 veiksmas: Pasirinkite skaičių tai yra mažiau tai n , kad n yra santykinai pirminis (p - 1) x (q -1). Tai reiškia kad tai yra ir (p – 1) x (q – 1) neturi bendro koeficiento, išskyrus 1. Pasirinkite „e“, kad 1

Antra, mes apskaičiuojame

φ (n) = (p - 1) x (q-1)

φ (n) = (3–1) x (11–1)

linux komandos sukurti aplanką

φ (n) = 2 x 10

φ (n) = 20

4 veiksmas: Norėdami nustatyti viešąjį raktą, naudojame šią formulę d apskaičiuoti taip, kad:

Apskaičiuokite e x d = 1 mod φ (n)

e x 7 = 1 prieš 20

e x 7 = 1 prieš 20

e = (1 + k. φ (n))/ d [tegul k = 0, 1, 2, 3………………]

Įdėkite k = 0

e = (1 + 0 x 20) / 7

e = 1/7

Įdėkite k = 1

e = (1 + 1 x 20) / 7

e = 21/7

e = 3

Viešasis raktas yra = (3, 33)

Taigi viešasis raktas, ty e = 3