आरएसए सिफर हैकिंग
आरएसए सिफर को हैक करना छोटे अभाज्य संख्याओं के साथ संभव है, लेकिन इसे बड़ी संख्याओं के साथ उपयोग करने पर असंभव माना जाता है। जिन कारणों से यह निर्दिष्ट करना मुश्किल है कि आरएसए सिफर को हैक करना निम्न हैं -
ब्रूट बल का हमला काम नहीं करेगा क्योंकि इसके माध्यम से काम करने के लिए बहुत अधिक संभावनाएं हैं। इसके अलावा, यह बहुत समय लेता है।
RSA अल्गोरिद्म में डिक्शनरी अटैक काम नहीं करेगा क्योंकि कुंजियाँ संख्यात्मक हैं और इसमें कोई भी वर्ण शामिल नहीं है।
वर्णों की आवृत्ति विश्लेषण का पालन करना बहुत मुश्किल है क्योंकि एक ही एन्क्रिप्टेड ब्लॉक विभिन्न पात्रों का प्रतिनिधित्व करता है।
RSA साइफर को हैक करने के लिए कोई विशेष गणितीय ट्रिक्स नहीं हैं।
RSA डिक्रिप्शन समीकरण है -
M = C^d mod n
छोटे प्राइम नंबरों की मदद से, हम आरएसए सिफर को हैक करने की कोशिश कर सकते हैं और उसी के लिए नमूना कोड नीचे उल्लिखित है -
def p_and_q(n):
data = []
for i in range(2, n):
if n % i == 0:
data.append(i)
return tuple(data)
def euler(p, q):
return (p - 1) * (q - 1)
def private_index(e, euler_v):
for i in range(2, euler_v):
if i * e % euler_v == 1:
return i
def decipher(d, n, c):
return c ** d % n
def main():
e = int(input("input e: "))
n = int(input("input n: "))
c = int(input("input c: "))
# t = 123
# private key = (103, 143)
p_and_q_v = p_and_q(n)
# print("[p_and_q]: ", p_and_q_v)
euler_v = euler(p_and_q_v[0], p_and_q_v[1])
# print("[euler]: ", euler_v)
d = private_index(e, euler_v)
plain = decipher(d, n, c)
print("plain: ", plain)
if __name__ == "__main__":
main()
उत्पादन
उपरोक्त कोड निम्नलिखित आउटपुट का उत्पादन करता है -