RSA सिफर डिक्रिप्शन
यह अध्याय पिछले अध्याय की एक निरंतरता है जहां हमने RSA एल्गोरिथ्म का उपयोग करते हुए एन्क्रिप्शन के चरणवार कार्यान्वयन का पालन किया और इसके बारे में विस्तार से चर्चा की।
सिफर पाठ को डिक्रिप्ट करने के लिए उपयोग किया जाने वाला कार्य इस प्रकार है -
def decrypt(ciphertext, priv_key):
cipher = PKCS1_OAEP.new(priv_key)
return cipher.decrypt(ciphertext)
सार्वजनिक कुंजी क्रिप्टोग्राफी या असममित कुंजी क्रिप्टोग्राफ़ी के लिए, दो महत्वपूर्ण विशेषताओं को बनाए रखना महत्वपूर्ण है Authentication तथा Authorization।
प्राधिकरण
प्राधिकरण यह पुष्टि करने की प्रक्रिया है कि प्रेषक केवल वही है जिसने संदेश प्रसारित किया है। निम्नलिखित कोड यह बताते हैं -
def sign(message, priv_key, hashAlg="SHA-256"):
global hash
hash = hashAlg
signer = PKCS1_v1_5.new(priv_key)
if (hash == "SHA-512"):
digest = SHA512.new()
elif (hash == "SHA-384"):
digest = SHA384.new()
elif (hash == "SHA-256"):
digest = SHA256.new()
elif (hash == "SHA-1"):
digest = SHA.new()
else:
digest = MD5.new()
digest.update(message)
return signer.sign(digest)
प्रमाणीकरण
सत्यापन विधि द्वारा प्रमाणीकरण संभव है जिसे नीचे बताया गया है -
def verify(message, signature, pub_key):
signer = PKCS1_v1_5.new(pub_key)
if (hash == "SHA-512"):
digest = SHA512.new()
elif (hash == "SHA-384"):
digest = SHA384.new()
elif (hash == "SHA-256"):
digest = SHA256.new()
elif (hash == "SHA-1"):
digest = SHA.new()
else:
digest = MD5.new()
digest.update(message)
return signer.verify(digest, signature)
डिजिटल हस्ताक्षर को प्रेषक और प्राप्तकर्ता के विवरण के साथ सत्यापित किया गया है। यह सुरक्षा उद्देश्यों के लिए अधिक वजन आयु जोड़ता है।
RSA सिफर डिक्रिप्शन
आप आरएसए सिफर डिक्रिप्शन के लिए निम्न कोड का उपयोग कर सकते हैं -
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_OAEP
from Crypto.Signature import PKCS1_v1_5
from Crypto.Hash import SHA512, SHA384, SHA256, SHA, MD5
from Crypto import Random
from base64 import b64encode, b64decode
hash = "SHA-256"
def newkeys(keysize):
random_generator = Random.new().read
key = RSA.generate(keysize, random_generator)
private, public = key, key.publickey()
return public, private
def importKey(externKey):
return RSA.importKey(externKey)
def getpublickey(priv_key):
return priv_key.publickey()
def encrypt(message, pub_key):
cipher = PKCS1_OAEP.new(pub_key)
return cipher.encrypt(message)
def decrypt(ciphertext, priv_key):
cipher = PKCS1_OAEP.new(priv_key)
return cipher.decrypt(ciphertext)
def sign(message, priv_key, hashAlg = "SHA-256"):
global hash
hash = hashAlg
signer = PKCS1_v1_5.new(priv_key)
if (hash == "SHA-512"):
digest = SHA512.new()
elif (hash == "SHA-384"):
digest = SHA384.new()
elif (hash == "SHA-256"):
digest = SHA256.new()
elif (hash == "SHA-1"):
digest = SHA.new()
else:
digest = MD5.new()
digest.update(message)
return signer.sign(digest)
def verify(message, signature, pub_key):
signer = PKCS1_v1_5.new(pub_key)
if (hash == "SHA-512"):
digest = SHA512.new()
elif (hash == "SHA-384"):
digest = SHA384.new()
elif (hash == "SHA-256"):
digest = SHA256.new()
elif (hash == "SHA-1"):
digest = SHA.new()
else:
digest = MD5.new()
digest.update(message)
return signer.verify(digest, signature)