विषय-सूचि
RSA एल्गोरिथ्म क्या है? (rsa algorithm in cryptography in hindi)
RSA अल्गोरिथम एक asymmetric क्रिप्टोग्राफ़ी अल्गोरिथम है। Asymmetric का यहाँ पर अर्थ हुआ ये दो अलग-अलग key पर कार्य करता है-पब्लिक key एउर प्राइवेट key.
जैसा कि इसके नाम से पता चलता है, पब्लिक key को सभी को दिया जाता है जबकि प्राइवेट करी को प्राइवेट रखा जाता है।
Asymmetric क्रिप्टोग्राफ़ी का उदाहरण:
- एक क्लाइंट (जैसे कि ब्राउज़र) अपने पब्लिक key को सर्वर को भेजता है और कुछ डाटा के लिए निवेदन करता है।
- उसके बाद सर्वर क्लाइंट के पब्लिक key का प्रयोग कर के उस डाटा को एन्क्रिप्ट करता है और उस एन्क्रिप्ट किये हुए डाटा को भेजता है।
- उसेक बाद क्लाइंट उस डाटा को प्राप्त कर के डिक्रिप्ट करता है।
Since this is asymmetric, nobody else except browser can decrypt the data even if a third party has public key of browser. चूँकि ये असिमेट्रिक है, इसीलिए ब्राउज़र के अलावे कोई भी इसे डिक्रिप्ट नहीं कर सकता भले ही किसी थर्ड पार्टी के पास ब्राउज़र का पब्लिक key ही क्यों न हो।
RSA अल्गोरिथम की कार्यप्रणाली (working of rsa algorithm in hindi)
RSA अल्गोरिथम का विचार इस बात पर आधारित है कि बड़े इन्टिजर को फैक्टर करना काफी मुश्किल काम है। पब्लिक key दो संख्याओं को मिला कर बना होता है जिसमे से एक संख्या दो बड़े प्राइम संख्या का गुना होता है।
एक प्राइवेट key को भी इतनी दो प्राइम संख्या से मिलाकर बनाया जाता है। इसीलिए अगर कोई बड़ी संख्या को फैक्टर कर सकता है तो प्राइवेट key को कोम्प्रोमाईज़ किया जा सकता है।
इसीलिए एन्क्रिप्शन की पूरी मजबूरी key के आकार पर निर्भर करती है और अगर हम key साइज़ को दुगुना या तिगुना करते हैं तो एन्क्रिप्शन की मजबूती भी काफी ज्यादा बढ़ जाती है।
RSA के key अधिकतर 1024 या 2048 बिट लम्बे होते हैं लेकिन अब एक्सपर्ट लोगों का मन्ना है कि निकट भविष्य में 1024 बिट के key को तोड़ा जा सकता है। लेकिन अभी तक तो ऐसा कुछ नहीं हुआ है।
RSA अल्गोरिथम का मैकेनिज्म (mechanism of rsa algorithm in hindi)
पब्लिक key generate करने के लिए:
- दो प्राइम संख्या चुने। Suppose P = 53 and Q = 59.
पब्लिक key का पहला भाग : n = P*Q = 3127. - हमे एक छोटा एक्स्पोनेंट भी चाहिए, जैसे e :
लेकिन e को होना चाहिए:- एक इन्टिजर
- और n का फैक्टर नहीं होना चाहिए।
- 1 < e < Φ(n) [Φ(n) को नीचे बताया गया है],
अब मानते हैं कि ये 3 के बराबर होगा।
- हमारा पब्लिक key n और eइ से बना है।
प्राइवेट key generate करने के लिए:
- हमे कैलकुलेट करना है Φ(n) :
जैसे कि, Φ(n) = (P-1)(Q-1)
इसीलिए, Φ(n) = 3016 - अब प्राइवेट key का कैलकुलेशन, d :
d = (k*Φ(n) + 1) / e for some integer k
k = 2 के लिए, d का मान होगा 2011.
अब हमारे पास है हमारे पब्लिक key ( n = 3127 and e = 3) और प्राइवेट Key (d = 2011)।
RSA का उदाहरण (rsa algorithm example in hindi)
आइये अब हम “HI” को एन्क्रिप्ट कर के देक्ल्हते हैं कि ये प्रक्रिया कैसे काम करती है:
- पहले अक्षर को संख्या में बदले : H = 8 and I = 9
- इसीलिए Encrypted Data c = 89e mod n.
अब हमारा एन्क्रिप्ट किया हुआ डाटा होगा 1394
अब हम 1394 को डिक्रिप्ट करेंगे:
- Decrypted Data = cd mod n.
इसीलिए हमारे एन्क्रिप्ट किया हुआ डाटा होगा 89
8 = H और I = 9 i.e. "HI".
RSA अल्गोरिथम का कोड (rsa algorithm code in hindi)
अब हम आपको छोटे मानों के लिए RSA अल्गोरिथम का Cक कोड दिखा रहे हैं:
RSA असिमेट्रिक क्रिप्टोग्राफ़ी का प्रोग्राम
// algorithm. For demonstration values are
// relatively small compared to practical
// application
#include<stdio.h>
#include<math.h>
// Returns gcd of a and b
int
gcd(
int
a,
int
h)
{
int
temp;
while
(1)
{
temp = a%h;
if
(temp == 0)
return
h;
a = h;
h = temp;
}
}
// Code to demonstrate RSA algorithm
int
main()
{
// दो रैंडम प्राइम संख्या
double
p = 3;
double
q = 7;
//पब्लिक key का पहला भाग
double
n = p*q;
// पब्लिक key का दूसरा भाग पता करने के लिए
// e stands for encrypt
double
e = 2;
double
phi = (p-1)*(q-1);
while
(e < phi)
{
// e must be co-prime to phi and
// smaller than phi.
if
(gcd(e, phi)==1)
break
;
else
e++;
}
// Private key (d stands for decrypt)
// choosing d such that it satisfies
// d*e = 1 + k * totient
int
k = 2;
// A constant value
double
d = (1 + (k*phi))/e;
// Message to be encrypted
double
msg = 20;
printf
(
"Message data = %lf"
, msg);
// Encryption c = (msg ^ e) % n
double
c =
pow
(msg, e);
c =
fmod
(c, n);
printf
(
"\nEncrypted data = %lf"
, c);
// Decryption m = (c ^ d) % n
double
m =
pow
(c, d);
m =
fmod
(m, n);
printf
(
"\nOriginal Message Sent = %lf"
, m);
return
0;
इस कोड का आउटपुट होगा:
Message data = 12.000000 Encrypted data = 3.000000 Original Message Sent = 12.000000
इस लेख से सम्बंधित यदि आपका कोई भी सवाल या सुझाव है, तो आप उसे नीचे कमेंट में लिख सकते हैं।
Thanku Sir aapki iss post se mujhe kaphi help mili thankyou so much sir
thank you sir .
HELPFULL