Похожие презентации:
5-mavzu (1)
1. Shifrlash asoslari: Gronsfeld va Vijner shifri
2.
Shifrlash — bu axborotni maxfiy holatda saqlash yokixavfsiz yetkazib berish uchun matnni shifrlangan
holatga keltirish jarayoni. Kriptografiyaning bu usuli
turli davrlarda turli xil shifrlash texnikalari bilan
rivojlanib kelgan. Ushbu ma’ruzada Gronsfeld shifri
va Vijner shifri haqida to‘xtalamiz. Ikkala usul ham
tarixiy simmetrik shifrlash texnologiyalaridan bo‘lib,
xatli axborotni shifrlash va deshifrlashda foydalaniladi.
3. Gronsfeld shifri
Gronsfeld shifri, aslida, Vijner shifrining soddalashtirilganversiyasi bo‘lib, XVI asrga to‘g‘ri keladi. Ushbu shifrlash usuli
kriptografiyada qayta shifrlash tamoyiliga asoslangan.
Gronsfeld shifrining asosiy o‘ziga xosligi shundan iboratki, u
raqamlardan iborat kalitdan foydalanadi. Bu esa uni Vijner
shifridan ancha oddiy qiladi.
Gronsfeld shifrida har bir matn harfi kalitdagi raqam orqali
o‘zgartiriladi. Kalit raqamlardan iborat bo‘lgani uchun matn harflarini
almashtirish orqali shifrlash amalga oshiriladi.
4.
Misol:Original matn: HELLO
Kalit: 123
Shifrlash qadam-baqadam:
H harfi uchun 1 raqami bo‘yicha surilma (alfavitda H - 8-o‘rinda, 8 + 1 = 9, ya’ni I).
E harfi uchun 2 raqami bo‘yicha surilma (alfavitda E - 5-o‘rinda, 5 + 2 = 7, ya’ni G).
L harfi uchun 3 raqami bo‘yicha surilma (alfavitda L - 12-o‘rinda, 12 + 3 = 15, ya’ni O).
Shifrlangan matn: IGOMQ
5. Gronsfeld shifrining xususiyatlari
Kalit: faqat raqamlardan iborat bo‘lishi mumkin, bu esa uni soddaqiladi.
Shifrlash va deshifrlash: har bir harf kalitning mos raqamiga
qarab o‘zgartiriladi.
Xavfsizlik darajasi: Gronsfeld shifri Vijner shifriga qaraganda
xavfsizlik nuqtai nazaridan ancha kuchsizroq, chunki kalit faqat
raqamlardan iborat.
6. Vijner shifri
XVI asrda fransuz diplomatBlaise de Vijner tomonidan ixtiro qilingan
va uzoq vaqt davomida uni sindirish qiyin
bo‘lgan. Bu shifrlash usuli polialfavitik
shifr sifatida mashhur, ya'ni bitta harf bir
nechta turli alfavit orqali shifrlanadi. Kalit
harflardan iborat bo‘lib, u takroriy ravishda
matnning har bir harfi bilan bog‘lanadi.
7.
Vijner shifrida matn va kalit harflariga asoslangan shifrlash amalga oshiriladi. Har bir harf shifrlangandakalitning mos harfi bilan bog‘lanadi va shifr jadvali (Vijner jadvali) yordamida yangi harf hosil qilinadi.
Misol:
Original matn: HELLO
Kalit: KEY
Shifrlash qadam-baqadam:
H harfi K harfi bilan bog‘lanadi (Vijner jadvaliga
qaraganda H va K kesishmasi R harfini beradi).
E harfi E harfi bilan bog‘lanadi (E va E kesishmasi
I bo‘ladi).
L harfi Y harfi bilan bog‘lanadi (L va Y
kesishmasi J bo‘ladi).
Shifrlangan matn: RIJVS
8. Vijner shifrining xususiyatlari
Kalit: kalit harflardan iborat va u matn uzunligidan qisqa bo‘lsa, takrorlanadi.Shifr jadvali: shifrlash va deshifrlash Vijner jadvali orqali amalga oshiriladi, bu
polialfavitik shifrlashni ta’minlaydi.
Xavfsizlik: Vijner shifri uzoq vaqt davomida "Sindirib bo‘lmaydigan shifr"
deb hisoblangan, ammo XIX asrda Friedrich Kasiski tomonidan Kasiski testi
yordamida sindirilgan.
9. Gronsfeld va Vijner shifrlarini solishtirish
TavsifGronsfeld shifri
Vijner shifri
Kalit
Raqamlardan iborat
Harflardan iborat
Shifrlash jarayoni
Kalit raqamlariga ko‘ra harf
almashinuvi
Vijner jadvali orqali
polialfavitik shifrlash
Xavfsizlik
Nisbatan past
Ko‘proq xavfsizlikka ega
Deshifrlash
Osonroq
Biroz murakkabroq
Amaliy qo‘llanish
Oddiy matn shifrlashda
Kuchliroq matn shifrlashda
10. Gronsfeld shifri dasturi
• # Gronsfeld Shifri: Shifrlash va Deshifrlashdef gronsfeld_encrypt(plaintext, key):
alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
ciphertext = ''
key = [int(i) for i in key]
key_length = len(key)
# Raqamli kalitga o‘girish
for i, char in enumerate(plaintext.upper()):
if char in alphabet:
shift = key[i % key_length]
new_index = (alphabet.index(char) + shift) % 26
ciphertext += alphabet[new_index]
else:
ciphertext += char # Agar belgi alifboda bo'lmasa,
o'zgarmaydi
return ciphertext
def gronsfeld_decrypt(ciphertext, key):
alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
plaintext = ''
11.
key = [int(i) for i in key]key_length = len(key)
# Raqamli kalitga o‘girish
for i, char in enumerate(ciphertext.upper()):
if char in alphabet:
shift = key[i % key_length]
new_index = (alphabet.index(char) - shift) % 26
plaintext += alphabet[new_index]
else:
plaintext += char
return plaintext
# Misol
plaintext = "HELLO WORLD"
key = "231"
ciphertext = gronsfeld_encrypt(plaintext, key)
print(f"Shifrlangan matn: {ciphertext}")
decrypted_text = gronsfeld_decrypt(ciphertext, key)
print(f"Deshifrlangan matn: {decrypted_text}")
12. Vijner Shifri
• # Vigenère Shifri: Shifrlash va Deshifrlashdef vigenere_encrypt(plaintext, key):
alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
ciphertext = ''
key = key.upper() # Kalitni katta harflar qilib o'zgartirish
key_length = len(key)
for i, char in enumerate(plaintext.upper()):
if char in alphabet:
shift = alphabet.index(key[i % key_length])
new_index = (alphabet.index(char) + shift) % 26
ciphertext += alphabet[new_index]
else:
ciphertext += char # Agar belgi alifboda bo'lmasa, o'zgarmaydi
return ciphertext
def vigenere_decrypt(ciphertext, key):
alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
plaintext = ''
key = key.upper()
key_length = len(key)
13.
• for i, char in enumerate(ciphertext.upper()):if char in alphabet:
shift = alphabet.index(key[i % key_length])
new_index = (alphabet.index(char) - shift)
% 26
plaintext += alphabet[new_index]
else:
plaintext += char
return plaintext
# Misol
plaintext = "HELLO WORLD"
key = "KEY"
ciphertext = vigenere_encrypt(plaintext, key)
print(f"Shifrlangan matn: {ciphertext}")
decrypted_text = vigenere_decrypt(ciphertext, key)
print(f"Deshifrlangan matn: {decrypted_text}")