6- laboratoriya ishi


El-Gamal shifrlash algoritmi



Yüklə 78,77 Kb.
səhifə3/3
tarix31.12.2021
ölçüsü78,77 Kb.
#112507
1   2   3
6- laboratoriya ishi

El-Gamal shifrlash algoritmi. Ushbu ochiq kalitli shifrlash algoritmi diskert logarifmlash muammosiga asoslangan bo’lib, kalitlar uzunligi teng bo’lgan holda bardoshliligi RSA algoritmi bardoshligiga teng.

Kalit generatori. El-Gamal algoritmida kalit generatori quyidagi bosqichlardan iborat:

  • p – tub son tanlanadi;

  • g
    shartni qanoatlantiruvchi g butun son tanlanadi;

  • maxfiy kalit sifatida a
    shartni qanoatlantiruvchi butun son tanlanadi;

  • ochiq kalit sifatida y = ga mod p hisoblanadi;

  • ochiq kalitlar jufti (y, g, p) ma’lumotni shifrlovchi tomonlarga yoki ixtiyoriy odamlarga tarqatiladi.

Shifrlash qoidasi: Biror foydalanuvchi (A) maxfiy kalit a sonini tanlab oladi va y = ga mod p bolgan ochiq kalitni hisoblaydi. Agarda foydalanuvchi A bo’lsa, boshqa foydalanuvchi B - maxfiy ma’lumotni jonatuvchi bo’lsa, u holda B tomon p sonidan kichik bolgan biror kriptotizim uchun talab etiluvchi sonni tanlab olib,

y1 = gk (mod p) va y2 = (m* yk )(mod p),



sonlarini hisoblaydi. Bu yerda k EKUB( k, p -1) =1 shartni qanoatlantiruvchi butun son. So’ngra (B) (y1>y2) ma’lumotlarini (A)ga jo’natadi.

Deshifrlash qoidasi: Oz navbatida (A) bu shifrlangan ma’lumotni qabul qilib, quyidagi



(y2 * yp-1-a mod p) = m

bolgan hisoblash bilan ma’lumotning ochiq matnini tiklaydi.

Misol. A tomon o’zining maxfiy kaliti asosida ochiq kalit juftini hosil kiladi va uni B tomonda yuboradi. Olingan qiymatlar quyidagilar: g=3; p=31; a=4; y=(g^a)modp=(3^4)mod31=19. Bu yerda (p,g,y) - ochiq kalitlar jufti va a maxfiy kalit.

Shifrlash. Bu bosqich A tomonning ochiq kalitlari orqali B foydalanuvchi tomonidan amalga oshiriladi. Ochiq ma’lumot sifatida M=CDEF (2,3,4,5 -alifbodani o’rni) olinib, EKUB(k, p-1) =1 shartni qanoatlantiruvchi k=7 tanlandi. Shundan so’ng quyidagilar hisoblanadi:

r=(g^k)modp=(3^7)mod31=17;

C1=m*y^k=2 *(19^7)mod31=14;

C2= m*y^k =3 *(19^7)mod31=21;

C3= m*y^k =4*(19^7)mod31=28;

C4= m*y^k =5*(19^7)mod31=4;

Shundan so’ng C1,C2,C3,C4 lardan iborat S va r A tomonga yuboriladi. Deshifrlash. Bu jarayon maxfiy kalitga ega bo’lgan A tomondan amalga oshiriladi va ochiq matn olinadi:

M1=C1 *r^(p-1 -a)modp=14*17^(31-1 -4)mod31=2;

M2= C2 *r^(p-1 -a)modp =21*17^(31-1 -4)mod31=3;

M3= C3 *r^(p-1 -a)modp =28* 17^(31-1 -4)mod31=4;

M4=C4 *r^(p-1 -a)modp=4 * 17^(31-1 -4)mod31=5.

Ishni bajarilish tartibi va qo’yilgan vazifa


Asosiy matn shifrlash usullaridan birida shifrlansin va qadamma – qadam izohlansin. Shuningdek, Delpi, Java, C++ va C# dasturlash tizimlaridan birida dasturiy ta’minoti yaratilsin.
TALABAGA TOPSHIRIQ!!!. Dasturiy ta’minotni ishlab chiqish va ushbu dastur talaba tomonidan ixtiyoriy dasturlash tili olinishi mumkin va hisobotda dasturiy ta’minot ishlashi to’liq tavsiflansin.

IKKITA BIR XIL ISH QABUL QILINMAYDI!!!!!
Men bu tajriba ishida Python dasturlash tilidan foydalanib, RSA shifriga dastur tuzdim:

Dastur kodi:

from decimal import Decimal 
def gcd(a,b): 

    if b==0: 

        return a 

    else: 

        return gcd(b,a%b) 

p = int(input(' p = ')) 

q = int(input(' q = ')) 

no = int(input('e = ')) 

n = p*q 

t = (p-1)*(q-1) 


for e in range(2,t): 

    if gcd(e,t)== 1: 

        break

for i in range(1,10): 

    x = 1 + i*t 

    if x % e == 0: 

        d = int(x/e) 

        break

ctt = Decimal(0) 

ctt =pow(no,e) 

ct = ctt % n 
dtt = Decimal(0) 

dtt = pow(ct,d) 



dt = dtt % n 
print('n = '+str(n)+' e = '+str(e)+' t = '+str(t)+' d = '+str(d)+' Shifrmatn = '+str(ct)+' Berilgan matn = '+str(dt)) 
Natija:


Yüklə 78,77 Kb.

Dostları ilə paylaş:
1   2   3




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©muhaz.org 2025
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin