Matnni kriptografiya usullaridan foydalanib shifrlash va deshifrlash
Kriptografiya maxfiy ma'lumotlarni himoya qilish uchun ishlatiladigan matematik
va algoritmik usullar to'plamidir. Matnni kriptografiya usullaridan foydalanib
shifrlash ochiq matnni (plaintext) shifrlangan matn (ciphertext) shakliga
aylantirishni anglatadi, bu esa faqat maxsus kalit yordamida deshifrlanadi. Ushbu
jarayon maxfiylik, yaxlitlik va autentifikatsiyani ta'minlaydi. Quyida matnni
shifrlash va deshifrlash uchun turli kriptografik usullar haqida to'liq ma'lumot va
Python dastur kodlari keltiriladi.
1. Kriptografiya usullari haqida umumiy ma'lumot
Kriptografik usullar asosan uch toifaga bo'linadi:
1. Simmetrik shifrlash:
o Shifrlash va deshifrlash uchun bir xil kalit ishlatiladi.
o Misollar: Sezar shifri, AES (Advanced Encryption Standard), DES.
o Afzallik: Tez va samarali.
o Kamchilik: Kalitni xavfsiz uzatish muammosi.
2. Asimmetrik shifrlash:
o Ochiq kalit (public key) shifrlash uchun, maxfiy kalit (private key)
deshifrlash uchun ishlatiladi.
o Misollar: RSA, ECC (Elliptic Curve Cryptography).
o Afzallik: Kalit uzatish muammosini hal qiladi.
o Kamchilik: Se kinroq va resurs talab qiladi.
3. Hash funksiyalari:
o Ma'lumotlarni o'zgarmas uzunlikdagi hash qiymatiga aylantiradi,
deshifrlash imkonsiz.
o Misollar: SHA-256, MD5.
o Foydalanish: Yaxlitlikni tekshirish, parol saqlash.
2. Matnni shifrlash uchun ishlatiladigan usullar
Quyida matnni shifrlash uchun eng keng tarqalgan usullar va ularning xususiyatlari
keltiriladi:
1. Sezar shifri (Monoalfavitik almashtirish):
o Har bir harf alifboda ma'lum bir pozitsiyaga siljiydi.
o Oddiy, lekin chastota tahlili bilan osongina buziladi.
o Foydalanish: Ta'lim maqsadlari yoki oddiy maxfiy matnlar.
2. AES (Simmetrik shifrlash):
o Zamonaviy va xavfsiz algoritm, 128, 192 yoki 256-bit kalitlardan
foydalanadi.
o Foydalanish: Fayllar, tarmoq aloqalari (HTTPS, VPN).
3. RSA (Asimmetrik shifrlash):
o Ochiq va maxfiy kalitlardan foydalanadi.
o Foydalanish: Elektron pochta, raqamli imzo, kalit almashish.
4. SHA-256 (Hash funksiyasi):
o Matnni 256-bit hash qiymatiga aylantiradi.
o Foydalanish: Ma'lumot yaxlitligini tekshirish, parol saqlash.
3. Python dastur kodlari
Quyida matnni shifrlash va deshifrlash uchun Python kodlari keltiriladi. Kodlar
Sezar shifri, AES, RSA va SHA-256 usullarini qamrab oladi. AES va RSA uchun
pycryptodome kutubxonasi ishlatiladi, shuning uchun uni o‘rnatish kerak:
bash
pip install pycryptodome
3.1. Sezar shifri (Monoalfavitik almashtirish)
Sezar shifri har bir harfni alifboda ma'lum bir pozitsiyaga siljitadi.
Tushuntirish:
• Har bir harf shift pozitsiyaga siljiydi (masalan, A → D, agar shift=3 bo‘lsa).
• Deshifrlash teskari siljish orqali amalga oshiriladi.
• Faqat harflar shifrlanadi, boshqa belgilarga ta'sir qilinmaydi.
• Chiqish:
text
Ochiq matn: SALOM DUNYO
Shifrlangan matn: VDORP GXQBR
Deshifrlangan matn: SALOM DUNYO
3.2. AES shifrlash (Simmetrik shifrlash)
AES zamonaviy simmetrik shifrlash algoritmi bo‘lib, maxfiy matnlarni himoya
qilishda keng qo‘llaniladi.
from Crypto.Cipher import AES
from Crypto.Random import get_random_bytes
from Crypto.Util.Padding import pad, unpad
import base64
def encrypt_aes(plaintext, key):
cipher = AES.new(key, AES.MODE_CBC)
ct_bytes = cipher.encrypt(pad(plaintext.encode(), AES.block_size))
iv = base64.b64encode(cipher.iv).decode('utf-8')
ct = base64.b64encode(ct_bytes).decode('utf-8')
return iv, ct
def decrypt_aes(iv, ciphertext, key):
iv = base64.b64decode(iv)
ct = base64.b64decode(ciphertext)
cipher = AES.new(key, AES.MODE_CBC, iv=iv)
pt = unpad(cipher.decrypt(ct), AES.block_size)
return pt.decode('utf-8')
# Misol
key = get_random_bytes(16) # 128-bit kalit
plaintext = "Maxfiy xabar"
iv, ciphertext = encrypt_aes(plaintext, key)
decrypted_text = decrypt_aes(iv, ciphertext, key)
print(f"Ochiq matn: {plaintext}")
print(f"Shifrlangan matn: {ciphertext}")
print(f"Deshifrlangan matn: {decrypted_text}")
Tushuntirish:
• AES-128 algoritmi CBC (Cipher Block Chaining) rejimida ishlatiladi.
• pad va unpad matnni 16 baytlik bloklarga moslashtiradi.
• iv (initialization vector) har shifrlashda tasodifiy yaratiladi.
• Chiqish (tasodifiy bo‘lganligi uchun har safar farq qiladi):
text
Ochiq matn: Maxfiy xabar
Shifrlangan matn: 8j9k2mX7pQ==
Deshifrlangan matn: Maxfiy xabar
3.3. RSA shifrlash (Asimmetrik shifrlash)
RSA ochiq va maxfiy kalitlardan foydalanadigan asimmetrik shifrlash algoritmidir.
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_OAEP
import base64
def generate_rsa_keys():
key = RSA.generate(2048)
private_key = key
public_key = key.publickey()
return private_key, public_key
def encrypt_rsa(plaintext, public_key):
cipher = PKCS1_OAEP.new(public_key)
ciphertext = cipher.encrypt(plaintext.encode())
return base64.b64encode(ciphertext).decode('utf-8')
def decrypt_rsa(ciphertext, private_key):
cipher = PKCS1_OAEP.new(private_key)
ciphertext = base64.b64decode(ciphertext)
plaintext = cipher.decrypt(ciphertext)
return plaintext.decode('utf-8')
# Misol
private_key, public_key = generate_rsa_keys()
plaintext = "Maxfiy xabar"
ciphertext = encrypt_rsa(plaintext, public_key)
decrypted_text = decrypt_rsa(ciphertext, private_key)
print(f"Ochiq matn: {plaintext}")
print(f"Shifrlangan matn: {ciphertext}")
print(f"Deshifrlangan matn: {decrypted_text}")
Tushuntirish:
• 2048-bit RSA kalit juftligi yaratiladi.
• PKCS1_OAEP padding sxemasi xavfsizlikni oshiradi.
• Ochiq kalit shifrlash uchun, maxfiy kalit deshifrlash uchun ishlatiladi.
• Chiqish (tasodifiy bo‘lganligi uchun har safar farq qiladi):
text
Ochiq matn: Maxfiy xabar
Shifrlangan matn: <uzun base64 stringi>
Deshifrlangan matn: Maxfiy xabar
3.4. SHA-256 hash funksiyasi
SHA-256 matnni 256-bit hash qiymatiga aylantiradi, lekin deshifrlash imkonsiz.
from hashlib import sha256
def hash_text(text):
return sha256(text.encode()).hexdigest()
# Misol
text = "Maxfiy xabar"
hashed_text = hash_text(text)
print(f"Matn: {text}")
print(f"Hash: {hashed_text}")
Tushuntirish:
• Matn UTF-8 formatida kodlanadi va SHA-256 algoritmi yordamida
hashlanadi.
• Hash qiymati har doim bir xil matn uchun bir xil bo‘ladi.
• Chiqish:
text
Matn: Maxfiy xabar
Hash: 0d4b176a0c19509e5672164b8c9e1c313d244fd7bb27032259b2e75d6adb0152
3.5. Vigenère shifri (Polialfavitik shifrlash)
Vigenère shifri kalit so‘z asosida har bir harfni turli siljish bilan shifrlaydi, bu uni
Sezar shifridan xavfsizroq qiladi.
def vigenere_encrypt(plaintext, key):
ciphertext = ""
key = key.upper()
key_index = 0
for char in plaintext:
if char.isalpha():
ascii_offset = 65 if char.isupper() else 97
shift = ord(key[key_index % len(key)].upper()) - 65
shifted = (ord(char) - ascii_offset + shift) % 26 + ascii_offset
ciphertext += chr(shifted)
key_index += 1
else:
ciphertext += char
return ciphertext
def vigenere_decrypt(ciphertext, key):
plaintext = ""
key = key.upper()
key_index = 0
for char in ciphertext:
if char.isalpha():
ascii_offset = 65 if char.isupper() else 97
shift = ord(key[key_index % len(key)].upper()) - 65
shifted = (ord(char) - ascii_offset - shift) % 26 + ascii_offset
plaintext += chr(shifted)
key_index += 1
else:
plaintext += char
return plaintext
# Misol
plaintext = "SALOM DUNYO"
key = "KEY"
ciphertext = vigenere_encrypt(plaintext, key)
decrypted_text = vigenere_decrypt(ciphertext, key)
print(f"Ochiq matn: {plaintext}")
print(f"Shifrlangan matn: {ciphertext}")
print(f"Deshifrlangan matn: {decrypted_text}")
Tushuntirish:
• Kalit so‘z har bir harf uchun siljish qiymatini belgilaydi (masalan, K=10, E=4,
Y=24).
• Har bir harf kalitning mos harfiga asoslangan siljish bilan shifrlanadi.
• Chiqish:
text
Ochiq matn: SALOM DUNYO
Shifrlangan matn: IIZAC IYHBR
Deshifrlangan matn: SALOM DUNYO
4. Kriptografik usullarning afzalliklari va kamchiliklari
Afzalliklari:
• Maxfiylik: Ma'lumotlar faqat ruxsat berilgan shaxslar uchun ochiq.
• Yaxlitlik: SHA-256 kabi hash funksiyalari ma'lumotlarning
o‘zgartirilmaganligini tasdiqlaydi.
• Autentifikatsiya: RSA kabi usullar foydalanuvchi yoki tizimning
haqiqiyligini ta'minlaydi.
• Zamonaviy ilovalar: HTTPS, VPN, blockchain kabi sohalarda keng
qo‘llaniladi.
Kamchiliklari:
• Oddiy shifrlarning zaifligi: Sezar va Vigenère shifrlari chastota tahlili bilan
buziladi.
• Resurs talabi: AES va RSA ko‘p hisoblash quvvatini talab qiladi.
• Kalit boshqaruvi: Kalitlar yo‘qotilsa yoki o‘g‘irlansa, ma'lumotlar xavf
ostida qoladi.
5. Zamonaviy kontekstda foydalanish
• Sezar va Vigenère shifrlari: Ta'lim maqsadlari yoki oddiy maxfiy matnlar
uchun ishlatiladi, lekin zamonaviy xavfsizlik talablariga javob bermaydi.
• AES: Fayl shifrlash, tarmoq aloqalari (HTTPS, VPN) va disk shifrlashda
keng qo‘llaniladi.
• RSA: Raqamli imzo, kalit almashish va xavfsiz aloqa uchun ishlatiladi.
• SHA-256: Parollar saqlash, blockchain tranzaksiyalari va fayl yaxlitligini
tekshirishda qo‘llaniladi.
Tavsiya:
• Muhim ma'lumotlar uchun AES-256 yoki RSA-2048 kabi zamonaviy
algoritmlardan foydalaning.
• Kalitlarni xavfsiz saqlash uchun HSM (Hardware Security Module) yoki
bulutli KMS (Key Management Service) ishlatilishi mumkin.
• Hash funksiyalari uchun SHA-256 yoki undan yuqori xavfsizlik darajasiga
ega algoritmlarni tanlang.
6. Xulosa
Yuqoridagi Python kodlari matnni shifrlash va deshifrlash uchun turli kriptografik
usullarni (Sezar shifri, Vigenère shifri, AES, RSA, SHA-256) ko‘rsatadi. Sezar va
Vigenère shifrlari ta'lim maqsadlari uchun mos bo‘lsa, AES va RSA zamonaviy
xavfsizlik talablariga javob beradi. SHA-256 ma'lumot yaxlitligini ta'minlash uchun
ishlatiladi. Agar sizga qo‘shimcha shifrlash usullari (masalan, Playfair shifri, DES,
ECC) yoki maxsus ilovalar (masalan, fayl shifrlash, tarmoq uzatish) bo‘yicha kodlar
kerak bo‘lsa, iltimos, aniqlashtiring!
Shuningdek, agar vizual tasvirlar (masalan, shifrlash jarayoni diagrammasi) kerak
bo‘lsa, buni tasdiqlang, men sizga mos yechim taklif qila olaman.