1-Mavzu: Kriptografiyaning matematik asosi(RSA) shifrlash algoritmi
Kriptografiya – amaliy matematikaning bir bo‘limi bo‘lib, axborotlarni mazmunini yashirish yoki ruxsatsiz foydalanishdan asrash maqsadida axborotlarni bir ko‘rinishdan boshqa ko‘rinishga o‘tkazish uchun mo‘ljallangan modellar, metodlar, algoritm, dasturiy va texnik vositalarni o‘rganadi.
Kriptosistema — bu axborotlarni kriptografik almashtirilishini dasturiy, texnik yoki dasturiy-texnik usullar yodamida amalga oshiruvchi tizimdir.
Kriptoanaliz (kriptotahlil) — bu amaliy matematikaning bitta bo‘limi bo‘lib, kiruvchi yoki chiquvchi signallardan foydalanib maxfiy parametrlarni aniqlab olish (yashirin matnni ochish) maqsadida kriptosistemalarni tahlil qilishga qaratilgan usul, model, algoritm, dasturiy va texnik vositalarni o‘rganadi.
Yuqoridagi ma’lumotlardan ko‘rinib turibdiki, kriptoanaliz matematik ma’noda kriptografiyaga teskari bo‘lgan masalalar bilan shug‘ullanadi. Kriptografiya va kriptoanaliz birgalikda yangi fan kriptologiyani tashkil qiladi.Kriptologiya tarixini uch bosqichdan iborat deb hisoblash mumkin.
Kriptografiya quyidagi masalalarni yechilishini ta’minlashi kerak.
Autentifikatsiya - kabul qiluvchi shunga ishonch hosil kilishi kerakki ma’lumot aniq bir yuboruvchidan bo’lishi shart. Boshqa bir nom bilan yolg’on ma’lumot yuborilmasligi kerak;
Butunlik - uzatish paytida axborot o‘zgarmasligi;
Inkor qilmaslik (neosporimost) -ma’lumotni yuboruvchi o‘zi ekanini tasdiqlashi.
RSA shifrlash algaritimining matematik asosi bunda yetarlicha 2 ta p va q sonlar berilgan bo’lsin va ular o’zaro tub
eyler funksiyasi qiymati shu formula bilan aniqlanadi => ф(n)=(p-1)*(q-1) ,
ochiq kalit => {e,n} bunda e => (e,ф(n))=1,
1yopiq kalit => S={d,n} => d=e-1 ,
(d*e)mod(n)=1 , bu formulada e va d ning ko’paytmasini n ga bo’lgandagi qoldiq 1 bo’lshi kerakligini anglatadi
shifirlashning asosiy formulasi bi=aiemod(n) bunda har bir belgini shifirlash uchun shu formula ishlatiladi
deshifirlash uchun esa ai=bidmod(n) shu formula bilan hisoblanadi.
print(' Siz kalit sifatida tub sonlardan foydalanishingiz \n mumkin buning uchun n ga chegara qiymat bering')
n=int(input('n='))
I=[]
for i in range(1,n):
tubson=True
for j in range(2,i):
if i%j==0:
tubson=False
break
if tubson==True:
I.append(i)
print(I)
s=list(map(str, input('Shifrlanishi kerak bo\'lgan matinni kiriting : ')))
print('o\'zaro tub bo\'lgan ikkita son kiriting')
N=len(s)
p=int(input('1-son p = '))
q=int(input('2-son q = '))
m=p*q
fn=(q-1)*(p-1)
l=[]
for i in range(2,fn):
tubson=True
for j in range(2,i):
if i%j==0:
tubson=False
break
if tubson==True :
if fn%i==0:
l.append(i)
print(' fn ning tub ko\'paytuvchilari :')
print(l)
L=len(l)
print(L)
y=[]
for k in range(2,fn):
tubson=True
for h in l:
if k%h==0:
tubson=False
#y.append(k)
break
if tubson==True :
y.append(k)
print(' e ni qiymatini shulardan tanlang :')
print(y)
e=int(input('e = '))
Z=[]
for z in range(1,1000):
if (z*e)%fn==1:
Z.append(z)
print(' d ning qiymatlari : ', Z)
chrb=[]
for i in range(0,N):
if (ord(s[i])<96): d=ord(s[i])-64
else: d=ord(s[i])-96
b=d**e%m
#chrb.append(chr(b))
print(chr(b),end='')
Do'stlaringiz bilan baham: |