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 -