Python का उपयोग करके RSA एल्गोरिथम लागू करना
यह आलेख बताता है कि वास्तव में क्रिप्टोग्राफी में आरएसए एल्गोरिदम क्या है और दिखाता है कि पायथन का उपयोग करके डेटा के एन्क्रिप्शन और डिक्रिप्शन के लिए आरएसए एल्गोरिदम को कैसे कार्यान्वित किया जाए। यहाँ, डेटा संख्याओं को संदर्भित करता है। आप इस एल्गोरिदम का उपयोग करके एन्क्रिप्शन और डिक्रिप्शन के लिए स्ट्रिंग डेटा का भी उपयोग कर सकते हैं।
RSA एल्गोरिथ्म संदेशों को एन्क्रिप्ट करने और डिक्रिप्ट करने के लिए व्यापक रूप से उपयोग की जाने वाली विधि है। इसका नाम इसके रचनाकारों, रॉन रिवेस्ट , आदि शमीर और लियोनार्ड एडलमैन के नाम पर रखा गया है, जिन्होंने इसे 1977 में विकसित किया था । आरएसए एल्गोरिदम बड़ी संख्या में फैक्टरिंग की कठिनाई पर आधारित है, और इसे व्यापक रूप से डेटा एन्क्रिप्ट करने के लिए एक सुरक्षित तरीका माना जाता है।
यह समझने के लिए कि आरएसए एल्गोरिथम कैसे काम करता है, हमें पहले सार्वजनिक और निजी कुंजियों की अवधारणा को समझने की आवश्यकता है। RSA एल्गोरिथ्म में, प्रत्येक उपयोगकर्ता के पास कुंजियों की एक जोड़ी होती है: एक सार्वजनिक कुंजी और एक निजी कुंजी। सार्वजनिक कुंजी किसी को भी उपलब्ध कराई जाती है जो उपयोगकर्ता को संदेश भेजना चाहता है, और इसका उपयोग संदेश को एन्क्रिप्ट करने के लिए किया जाता है। निजी कुंजी को गुप्त रखा जाता है और इसका उपयोग संदेश को डिक्रिप्ट करने के लिए किया जाता है।
आरएसए एल्गोरिथम कैसे काम करता है इसका एक उदाहरण यहां दिया गया है:
- मान लीजिए कि ग्वेन पीटर को संदेश भेजना चाहती है। वह पीटर की सार्वजनिक कुंजी देखती है और संदेश को एन्क्रिप्ट करने के लिए इसका उपयोग करती है।
- एन्क्रिप्टेड संदेश पीटर को भेजा जाता है।
- पीटर संदेश को डिक्रिप्ट करने और उसे पढ़ने के लिए अपनी निजी कुंजी का उपयोग करता है।
यहां बताया गया है कि यह कैसे अधिक विस्तार से काम करता है:
- सबसे पहले, ग्वेन और पीटर दो बड़ी अभाज्य संख्याओं, p और q पर सहमत हैं।
- वे इन अभाज्य संख्याओं का उपयोग तीसरी संख्या, n की गणना करने के लिए करते हैं, जो p और q का गुणनफल है। यह संख्या सार्वजनिक की जाती है।
- वे एक चौथी संख्या की भी गणना करते हैं, जिसे "टोटिएंट" के रूप में जाना जाता है, जो n से कम धनात्मक पूर्णांकों की संख्या है जो n के लिए कोप्राइम हैं। यह नंबर भी सार्वजनिक किया जाता है।
- ग्वेन और पीटर प्रत्येक एक गुप्त कुंजी उत्पन्न करते हैं, जिसे "निजी कुंजी" के रूप में जाना जाता है। यह कुंजी एक संख्या है जो टोटिएंट से छोटी है और टोटिएंट के लिए कोप्राइम है।
- इसके बाद वे अपनी सार्वजनिक कुंजी की गणना करने के लिए अपनी निजी कुंजी का उपयोग करते हैं, जो कि एक संख्या है जो टोटिएंट के लिए अपेक्षाकृत प्रमुख है। यह सार्वजनिक कुंजी किसी को भी उपलब्ध कराई जाती है जो उपयोगकर्ता को संदेश भेजना चाहता है।
RSA एल्गोरिथ्म के कई फायदे हैं। इसे लागू करना अपेक्षाकृत सरल है, और इसका व्यापक रूप से उपयोग किया जाता है क्योंकि इसे डेटा एन्क्रिप्ट करने का एक सुरक्षित तरीका माना जाता है। इसके अतिरिक्त, RSA एल्गोरिथ्म एक "सार्वजनिक कुंजी" एल्गोरिथ्म है, जिसका अर्थ है कि एन्क्रिप्शन और डिक्रिप्शन के लिए उपयोग की जाने वाली कुंजियाँ अलग-अलग हैं। यह उपयोगकर्ताओं के लिए गुप्त कुंजियों का आदान-प्रदान किए बिना संवाद करना संभव बनाता है।
सारांश में, संदेशों को एन्क्रिप्ट करने और डिक्रिप्ट करने के लिए RSA एल्गोरिद्म एक व्यापक रूप से उपयोग की जाने वाली विधि है। यह बड़ी संख्या में फैक्टरिंग की कठिनाई पर आधारित है, और इसे डेटा एन्क्रिप्ट करने के लिए एक सुरक्षित तरीका माना जाता है। इसके कई फायदे हैं, जिसमें इसकी सरलता और सार्वजनिक और निजी चाबियों का उपयोग शामिल है।
सरल शब्दों में संपूर्ण RSA एल्गोरिद्म,
- p , q चुनें ( p और q दोनों अभाज्य और p q के बराबर नहीं है )
- एन = पी * क्यू की गणना करें
- टोटिएंट की गणना करें, टी = (पी -1) * (क्यू - 1)
- जीसीडी (टी, ई) = 1 का उपयोग करके ई का चयन करें जहां 1 <ई <टी
- डी का उपयोग करके गणना करें (डी * ई% टी = 1)
- ई को सार्वजनिक कुंजी के रूप में और डी को निजी कुंजी के रूप में मानें।
- एन्क्रिप्शन के लिए, सिफर टेक्स्ट = (संदेश ^ ई) % n (जहाँ, संदेश <n)
- डिक्रिप्शन के लिए, संदेश = (सिफर टेक्स्ट ^ डी)% एन
from math import gcd
# defining a function to perform RSA approch
def RSA(p: int, q: int, message: int):
# calculating n
n = p * q
# calculating totient, t
t = (p - 1) * (q - 1)
# selecting public key, e
for i in range(2, t):
if gcd(i, t) == 1:
e = i
break
# selecting private key, d
j = 0
while True:
if (j * e) % t == 1:
d = j
break
j += 1
# performing encryption
ct = (message ** e) % n
print(f"Encrypted message is {ct}")
# performing decryption
mes = (ct ** d) % n
print(f"Decrypted message is {mes}")
# Testcase - 1
RSA(p=53, q=59, message=89)
# Testcase - 2
RSA(p=3, q=7, message=12)
Encrypted message is 1394
Decrypted message is 89
Encrypted message is 3
Decrypted message is 12
अगर उपयोगी लगे तो इसे अपने दोस्तों के साथ शेयर करें और फॉलो करना ना भूलें।
मिलते हैं किसी और ब्लॉग में तब तक के लिए बाय

![क्या एक लिंक्ड सूची है, वैसे भी? [भाग 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































