Simetrik ve Asimetrik Kriptografi

Bu bölümde simetrik ve asimetrik kriptografiyi detaylı olarak tartışalım.

Simetrik Kriptografi

Bu türde, şifreleme ve şifre çözme işlemi aynı anahtarı kullanır. Olarak da adlandırılırsecret key cryptography. Simetrik kriptografinin temel özellikleri aşağıdaki gibidir -

  • Daha basit ve daha hızlı.
  • İki taraf anahtarı güvenli bir şekilde değiştirir.

Dezavantaj

Simetrik kriptografinin en büyük dezavantajı, anahtar saldırgana sızdırılırsa, mesajın kolayca değiştirilebilmesi ve bunun bir risk faktörü olarak kabul edilmesidir.

Veri Şifreleme Standardı (DES)

En popüler simetrik anahtar algoritması Veri Şifreleme Standardıdır (DES) ve Python, DES algoritmasının arkasındaki mantığı içeren bir paket içerir.

Kurulum

DES paketini yükleme komutu pyDES Python'da -

pip install pyDES

DES algoritmasının basit program uygulaması aşağıdaki gibidir -

import pyDes

data = "DES Algorithm Implementation"
k = pyDes.des("DESCRYPT", pyDes.CBC, "\0\0\0\0\0\0\0\0", pad=None, padmode=pyDes.PAD_PKCS5)
d = k.encrypt(data)

print "Encrypted: %r" % d
print "Decrypted: %r" % k.decrypt(d)
assert k.decrypt(d) == data

Değişkeni çağırır padmode DES algoritması uygulamasına göre tüm paketleri getirir ve şifreleme ve şifre çözmeyi belirli bir şekilde izler.

Çıktı

Yukarıda verilen kodun bir sonucu olarak aşağıdaki çıktıyı görebilirsiniz -

Asimetrik Kriptografi

Olarak da adlandırılır public key cryptography.Simetrik kriptografinin tersi şekilde çalışır. Bu, iki anahtar gerektirdiği anlamına gelir: biri şifreleme ve diğeri şifre çözme için. Genel anahtar şifreleme için kullanılır ve özel anahtar şifre çözmek için kullanılır.

Dezavantaj

  • Anahtar uzunluğu nedeniyle daha düşük şifreleme hızına katkıda bulunur.
  • Anahtar yönetimi çok önemlidir.

Python'daki aşağıdaki program kodu, RSA algoritması ve uygulamasını kullanarak asimetrik kriptografinin çalışmasını göstermektedir -

from Crypto import Random
from Crypto.PublicKey import RSA
import base64

def generate_keys():
   # key length must be a multiple of 256 and >= 1024
   modulus_length = 256*4
   privatekey = RSA.generate(modulus_length, Random.new().read)
   publickey = privatekey.publickey()
   return privatekey, publickey

def encrypt_message(a_message , publickey):
   encrypted_msg = publickey.encrypt(a_message, 32)[0]
   encoded_encrypted_msg = base64.b64encode(encrypted_msg)
   return encoded_encrypted_msg

def decrypt_message(encoded_encrypted_msg, privatekey):
   decoded_encrypted_msg = base64.b64decode(encoded_encrypted_msg)
   decoded_decrypted_msg = privatekey.decrypt(decoded_encrypted_msg)
   return decoded_decrypted_msg

a_message = "This is the illustration of RSA algorithm of asymmetric cryptography"
privatekey , publickey = generate_keys()
encrypted_msg = encrypt_message(a_message , publickey)
decrypted_msg = decrypt_message(encrypted_msg, privatekey)

print "%s - (%d)" % (privatekey.exportKey() , len(privatekey.exportKey()))
print "%s - (%d)" % (publickey.exportKey() , len(publickey.exportKey()))
print " Original content: %s - (%d)" % (a_message, len(a_message))
print "Encrypted message: %s - (%d)" % (encrypted_msg, len(encrypted_msg))
print "Decrypted message: %s - (%d)" % (decrypted_msg, len(decrypted_msg))

Çıktı

Yukarıda verilen kodu çalıştırdığınızda aşağıdaki çıktıyı bulabilirsiniz -