Biz Python-da Caesar Cipher deb nomlangan shifrlash usullaridan birini ko'rib chiqamiz. Bu kriptografiyaning bir qismi


Download 11.55 Kb.
Sana21.03.2023
Hajmi11.55 Kb.
#1285608
Bog'liq
top1 ax


biz Python-da Caesar Cipher deb nomlangan shifrlash usullaridan birini ko'rib chiqamiz. Bu kriptografiyaning bir qismi.

Kirish
Ushbu usulda har bir belgi harfdan keyin yoki undan oldin joylashgan ma'lum bir sobit raqamli pozitsiyaga ega harf bilan almashtiriladi. Masalan, b harfi D dan keyingi ikkita pozitsiya bilan almashtiriladi, D F ga aylanadi va hokazo. Ushbu usul Yuliy Tsezarning nomi bilan atalgan, u rasmiylar bilan muloqot qilish uchun foydalangan.


Python-da qaysar shifrini amalga oshirish uchun algoritm ishlatiladi. Keling, buni aniqlaylik.


Qaysarning shifrlash algoritmining o'ziga xos xususiyati


Ushbu algoritm quyida keltirilgan bir nechta funktsiyalardan iborat.

Usulni qo'llash juda oson.


Har bir matn alfavit bo'yicha pastga yoki yuqoriga qarab belgilangan pozitsiya raqami bilan almashtiriladi.
Bu almashtirish shifrining oddiy turi.
Pastga tushirilgan matnning har bir oxirgi qismini aniqlash uchun butun son qiymati talab qilinadi. Ushbu tamsayı qiymati siljish deb ham ataladi.

Ushbu kontseptsiyani modulli arifmetik yordamida birinchi navbatda harfni sxemaga muvofiq raqamlarga aylantirish orqali tasavvur qilishimiz mumkin: A = 0, B = 1, C = 2, D= 3........ Z = 25.


N harfini siljitish uchun quyidagi matematik formuladan foydalanish mumkin.


Qanday qilib dekodlash kerak?


Shifrlash shifrlash bilan bir xil. Biz asl matnni ochish uchun qarama-qarshi yo'l bo'ylab siljishni amalga oshiradigan funktsiyani yaratishimiz mumkin. Biroq, modul ostida shifrning tsiklik xususiyatidan foydalanishimiz mumkin.

Cipher(n) = De-cipher(26-n)


Xuddi shu funktsiyadan dekodlash uchun foydalanish mumkin. Buning o'rniga biz siljish qiymatini shunday o'zgartiramiz Shift = 26 – siljish.


Keling, quyidagi misolni ko'rib chiqaylik –


def encypt_func(txt, s):


result = ""
# transverse the plain txt
for i in range(len(txt)):
char = txt[i]
# encypt_func uppercase characters in plain txt
if(char.isupper()):
result += chr((ord(char) + s - 64) % 26 + 65)
# encypt_func lowercase characters in plain txt
else:
result += chr((ord(char) + s - 96) % 26 + 97)
return result
# check the above function
txt = "CEASER CIPHER EXAMPLE"
s = 4
print("Plain txt : " + txt)
print("Shift pattern : " + str(s))
print("Cipher: " + encypt_func(txt, s))
Chiqish:

Plain txt : CEASER CIPHER EXAMPLE


Shift pattern : 4
Cipher: HJFXJWsHNUMJWsJCFRUQJ
Yuqoridagi kod bir vaqtning o'zida belgidan o'tdi. U har bir belgini matnni shifrlash va parolini hal qilish tartibiga qarab qoida bo'yicha uzatdi.

Biz shifrlangan matnni yaratadigan bir nechta aniq pozitsiyalar to'plamini aniqladik.


Qaysarning shifrlash algoritmini buzish


Shifrlangan matnni buzishning turli usullari mavjud. Buning bir usuli-bu parolni hal qilishning barcha mumkin bo'lgan kalitlarini tekshirishni o'z ichiga olgan qo'pol kuch usuli. Ushbu uslub unchalik murakkab emas va ko'p harakat talab etmaydi.

Misol –



msg = 'rGMTLIVrHIQSGIEWIVGIEWIV' #encrypted msg
LETTERS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
for k in range(len(LETTERS)):
transformation = ''
for s in msg:
if s in LETTERS:
n = LETTERS.find(s)
n = n - k
if n < 0:
n = n + len(LETTERS)
transformation = transformation + LETTERS[n]
else:
transformation = transformation + s
print('Hacking k #%s: %s' %(k, transformation))
Chiqish:
Источник: https://pythonpip.ru/examples/shifr-tsezarya-python
Download 11.55 Kb.

Do'stlaringiz bilan baham:




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling