<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>क्रिप्टोग्राफी on kenji.blog</title><link>http://kenji.blog/hi/tags/%E0%A4%95%E0%A5%8D%E0%A4%B0%E0%A4%BF%E0%A4%AA%E0%A5%8D%E0%A4%9F%E0%A5%8B%E0%A4%97%E0%A5%8D%E0%A4%B0%E0%A4%BE%E0%A4%AB%E0%A5%80/</link><description>Recent content in क्रिप्टोग्राफी on kenji.blog</description><generator>Hugo -- gohugo.io</generator><language>hi</language><copyright>kenjinote</copyright><lastBuildDate>Sat, 05 Sep 2026 22:09:22 +0900</lastBuildDate><atom:link href="http://kenji.blog/hi/tags/%E0%A4%95%E0%A5%8D%E0%A4%B0%E0%A4%BF%E0%A4%AA%E0%A5%8D%E0%A4%9F%E0%A5%8B%E0%A4%97%E0%A5%8D%E0%A4%B0%E0%A4%BE%E0%A4%AB%E0%A5%80/index.xml" rel="self" type="application/rss+xml"/><item><title>【PQC】क्वांटम कंप्यूटर युग की अगली पीढ़ी की क्रिप्टोग्राफी "पोस्ट-क्वांटम क्रिप्टोग्राफी" का पूरा अवलोकन</title><link>http://kenji.blog/hi/p/post-quantum-cryptography/</link><pubDate>Sat, 05 Sep 2026 22:09:22 +0900</pubDate><guid>http://kenji.blog/hi/p/post-quantum-cryptography/</guid><description>&lt;img src="http://kenji.blog/p/post-quantum-cryptography/post_quantum_cryptography_1788613735417.jpg" alt="Featured image of post 【PQC】क्वांटम कंप्यूटर युग की अगली पीढ़ी की क्रिप्टोग्राफी "पोस्ट-क्वांटम क्रिप्टोग्राफी" का पूरा अवलोकन" />&lt;h2 id="परचय-कवटम-कपयटर-दवर-करपटगरफ-क-लए-लय-गय-खतर">परिचय: क्वांटम कंप्यूटर द्वारा क्रिप्टोग्राफी के लिए लाया गया &amp;ldquo;खतरा&amp;rdquo;
&lt;/h2>&lt;p>वर्तमान में, हम इंटरनेट पर जो संचार प्रतिदिन करते हैं - ऑनलाइन बैंकिंग में भुगतान, वेबसाइट ब्राउज़िंग (HTTPS), मैसेजिंग ऐप्स के माध्यम से बातचीत, और ब्लॉकचेन या क्रिप्टोकरेंसी लेनदेन - उनमें से अधिकांश &amp;ldquo;पब्लिक-की क्रिप्टोग्राफी&amp;rdquo; (Public-key cryptography) नामक तकनीक द्वारा सुरक्षित हैं। विशेष रूप से, RSA और एलीप्टिक कर्व क्रिप्टोग्राफी (ECC) जैसे एल्गोरिदम आधुनिक डिजिटल समाज की विश्वसनीयता का आधार हैं।&lt;/p>
&lt;p>ये क्रिप्टोग्राफ़िक विधियां &amp;ldquo;बड़ी संख्याओं के अभाज्य गुणनखंडन&amp;rdquo; (Prime factorization) और &amp;ldquo;असतत लघुगणक समस्या&amp;rdquo; (Discrete logarithm problem) जैसी गणितीय समस्याओं पर आधारित हैं, जिन्हें हल करने में वर्तमान क्लासिकल कंप्यूटरों (सुपरकंप्यूटरों सहित) को खगोलीय समय लगेगा। हालाँकि, जब &lt;strong>&amp;ldquo;क्वांटम कंप्यूटर&amp;rdquo;&lt;/strong> (जो हाल के वर्षों में उल्लेखनीय प्रगति कर रहे हैं) व्यावहारिक उपयोग में आ जाएंगे, तो यह आधारभूत मान्यता पूरी तरह से उलट जाएगी।&lt;/p>
&lt;p>1994 में पीटर शोर (Peter Shor) द्वारा प्रकाशित &amp;ldquo;शोर का एल्गोरिदम&amp;rdquo;, गणितीय रूप से साबित करता है कि पर्याप्त शक्ति वाला एक क्वांटम कंप्यूटर अभाज्य गुणनखंडन और असतत लघुगणक समस्याओं को बहुत कम समय में हल कर सकता है। इसका मतलब यह है कि वर्तमान में इंटरनेट की रक्षा करने वाले सभी एन्क्रिप्टेड संचारों को भविष्य में डिक्रिप्ट किए जाने का जोखिम है (इस समस्या को Y2Q: Years to Quantum, या Q-Day कहा जाता है)।&lt;/p>
&lt;p>इससे भी अधिक गंभीर बात यह है कि &amp;ldquo;अभी हार्वेस्ट करें, बाद में डिक्रिप्ट करें&amp;rdquo; (Harvest Now, Decrypt Later - अभी डेटा चुराएं और स्टोर करें, भविष्य में डिक्रिप्शन संभव होने पर डिक्रिप्ट करें) जैसी हमले की तकनीकें मौजूद हैं। राज्य के रहस्य, कॉर्पोरेट बौद्धिक संपदा, और व्यक्तिगत बायोमेट्रिक जानकारी जैसे डेटा जिन्हें दशकों तक गोपनीय रखने की आवश्यकता होती है, पहले से ही भविष्य के डिक्रिप्शन के इरादे से चोरी का लक्ष्य हो सकते हैं।&lt;/p>
&lt;p>इस अभूतपूर्व संकट का जवाब देने के लिए, दुनिया भर के क्रिप्टोग्राफर और शोध संस्थान एक अगली पीढ़ी की क्रिप्टोग्राफ़िक तकनीक विकसित करने के लिए मिलकर काम कर रहे हैं जो क्वांटम कंप्यूटर हमलों के खिलाफ सुरक्षा बनाए रख सके: &lt;strong>पोस्ट-क्वांटम क्रिप्टोग्राफी (PQC)&lt;/strong> । इस लेख में, हम PQC की मूल बातों से लेकर, प्रमुख एल्गोरिदम कैसे काम करते हैं, और संयुक्त राज्य अमेरिका के राष्ट्रीय मानक और प्रौद्योगिकी संस्थान (NIST) द्वारा संचालित वैश्विक मानकीकरण के नवीनतम रुझानों तक सब कुछ विस्तार से बताएंगे।&lt;/p>
&lt;hr>
&lt;h2 id="पसट-कवटम-करपटगरफ-pqc-कय-ह">पोस्ट-क्वांटम क्रिप्टोग्राफी (PQC) क्या है?
&lt;/h2>&lt;p>पोस्ट-क्वांटम क्रिप्टोग्राफी (Post-Quantum Cryptography, PQC) उन क्रिप्टोग्राफ़िक एल्गोरिदम के लिए एक सामान्य शब्द है जो मौजूदा क्लासिकल कंप्यूटरों पर चलते हैं और भविष्य के बड़े पैमाने के क्वांटम कंप्यूटरों (जैसे शोर के एल्गोरिदम) द्वारा किए जाने वाले हमलों के प्रतिरोधी होने के लिए डिज़ाइन किए गए हैं।&lt;/p>
&lt;p>प्रौद्योगिकियां जिन्हें अक्सर PQC के साथ भ्रमित किया जाता है वे हैं &amp;ldquo;क्वांटम क्रिप्टोग्राफी&amp;rdquo; (Quantum Cryptography) और &amp;ldquo;क्वांटम की डिस्ट्रीब्यूशन&amp;rdquo; (QKD), लेकिन ये पूरी तरह से अलग दृष्टिकोण हैं। क्वांटम क्रिप्टोग्राफी (QKD) एक हार्डवेयर-आधारित तकनीक है जो संचार पथों पर ईव्सड्रॉपिंग को भौतिक रूप से असंभव बनाने के लिए क्वांटम यांत्रिकी के भौतिक नियमों (जैसे कि देखे जाने पर अवस्थाओं को बदलने का गुण) का उपयोग करती है। इसके लिए समर्पित ऑप्टिकल फाइबर और विशेष उपकरणों की आवश्यकता होती है, और इसमें स्थापना लागत और दूरी की सीमाओं जैसी चुनौतियाँ हैं।&lt;/p>
&lt;p>दूसरी ओर, &lt;strong>PQC विशुद्ध रूप से &amp;ldquo;गणित&amp;rdquo; पर आधारित एक सॉफ्टवेयर-आधारित क्रिप्टोग्राफिक तकनीक है&lt;/strong> । इसलिए, इसे मौजूदा इंटरनेट इंफ्रास्ट्रक्चर, सर्वर, स्मार्टफोन और ब्राउज़र में सॉफ़्टवेयर अपडेट के रूप में शामिल किया जा सकता है, जो इसे वास्तविक दुनिया के अनुप्रयोगों के लिए अत्यधिक अनुकूल बनाता है। दुनिया भर की आईटी कंपनियों और सरकारी एजेंसियों के लिए यह एक आवश्यक कार्य बन गया है कि वे वर्तमान में उपयोग किए जा रहे RSA और ECC को इस PQC से बदलें (माइग्रेट करें)।&lt;/p>
&lt;hr>
&lt;h2 id="pqc-क-समरथन-करन-वल-4-मखय-गणतय-दषटकण">PQC का समर्थन करने वाले 4 मुख्य गणितीय दृष्टिकोण
&lt;/h2>&lt;p>विभिन्न PQC एल्गोरिदम गणितीय समस्याओं (जैसे NP-hard समस्याएं) के आधार पर प्रस्तावित किए गए हैं जिन्हें क्वांटम कंप्यूटर का उपयोग करके भी कुशलता से हल नहीं किया जा सकता है। यहाँ हम वर्तमान में मुख्यधारा की चार प्रमुख श्रेणियों का परिचय देंगे।&lt;/p>
&lt;h3 id="पसट-कवटम-करपटगरफ-pqc-क-परमख-दषटकण">पोस्ट-क्वांटम क्रिप्टोग्राफी (PQC) के प्रमुख दृष्टिकोण
&lt;/h3>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-gdscript3" data-lang="gdscript3">&lt;span class="line">&lt;span class="cl">&lt;span class="n">graph&lt;/span> &lt;span class="n">LR&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">PQC&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="err">पोस्ट&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="err">क्वांटम&lt;/span> &lt;span class="err">क्रिप्टोग्राफी&lt;/span> &lt;span class="n">PQC&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="o">--&amp;gt;&lt;/span> &lt;span class="n">L&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="err">लैटिस&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="err">आधारित&lt;/span> &lt;span class="err">क्रिप्टोग्राफी&lt;/span> &lt;span class="n">Lattice&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">based&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">PQC&lt;/span> &lt;span class="o">--&amp;gt;&lt;/span> &lt;span class="n">H&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="err">हैश&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="err">आधारित&lt;/span> &lt;span class="err">क्रिप्टोग्राफी&lt;/span> &lt;span class="n">Hash&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">based&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">PQC&lt;/span> &lt;span class="o">--&amp;gt;&lt;/span> &lt;span class="n">M&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="err">मल्टीवेरिएट&lt;/span> &lt;span class="err">क्रिप्टोग्राफी&lt;/span> &lt;span class="n">Multivariate&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">PQC&lt;/span> &lt;span class="o">--&amp;gt;&lt;/span> &lt;span class="n">C&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="err">कोड&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="err">आधारित&lt;/span> &lt;span class="err">क्रिप्टोग्राफी&lt;/span> &lt;span class="n">Code&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">based&lt;/span>&lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">L&lt;/span> &lt;span class="o">--&amp;gt;&lt;/span> &lt;span class="n">L1&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">FIPS&lt;/span> &lt;span class="mi">203&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">ML&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">KEM&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">L&lt;/span> &lt;span class="o">--&amp;gt;&lt;/span> &lt;span class="n">L2&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">FIPS&lt;/span> &lt;span class="mi">204&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">ML&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">DSA&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">H&lt;/span> &lt;span class="o">--&amp;gt;&lt;/span> &lt;span class="n">H1&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">FIPS&lt;/span> &lt;span class="mi">205&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="n">SLH&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">DSA&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">style&lt;/span> &lt;span class="n">PQC&lt;/span> &lt;span class="n">fill&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="c1">#f9f,stroke:#333,stroke-width:2px&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h3 id="1-लटस-आधरत-करपटगरफ-lattice-based-cryptography">1. लैटिस-आधारित क्रिप्टोग्राफी (Lattice-based Cryptography)
&lt;/h3>&lt;p>वर्तमान में, PQC के क्षेत्र में सबसे आशाजनक और मुख्यधारा का दृष्टिकोण यह &amp;ldquo;लैटिस-आधारित क्रिप्टोग्राफी&amp;rdquo; है। लैटिस-आधारित क्रिप्टोग्राफी अपनी सुरक्षा को एक बहुआयामी अंतरिक्ष में नियमित रूप से व्यवस्थित बिंदुओं (लैटिस पॉइंट्स) से संबंधित समस्याओं पर आधारित करती है। प्रसिद्ध समस्याओं में &amp;ldquo;शॉर्टेस्ट वेक्टर प्रॉब्लम&amp;rdquo; (SVP) और &amp;ldquo;लर्निंग विद एरर्स&amp;rdquo; (LWE) शामिल हैं।&lt;/p>
&lt;p>&lt;strong>सिस्टम का अवलोकन:&lt;/strong>
कल्पना करें कि एक बहुत ही उच्च-आयामी (सैकड़ों से हजारों आयाम) अंतरिक्ष में एक ग्रिड पैटर्न में व्यवस्थित अनगिनत बिंदु हैं। 2 या 3 आयामों में किसी विशिष्ट लैटिस बिंदु को खोजना आसान है, लेकिन जब बात सैकड़ों आयामों की आती है, तो ऐसा कोई एल्गोरिदम नहीं खोजा गया है जो इसे क्लासिकल या क्वांटम कंप्यूटर दोनों से कुशलतापूर्वक ढूंढ सके। विशेष रूप से LWE समस्या इस गुण का उपयोग करती है कि &amp;ldquo;यदि जानबूझकर समकालिक रैखिक समीकरणों में थोड़ा सा &amp;lsquo;शोर&amp;rsquo; (त्रुटि) जोड़ा जाए, तो मूल चर का अनुमान लगाना नाटकीय रूप से कठिन हो जाता है।&amp;rdquo;&lt;/p>
&lt;p>&lt;strong>फायदे:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>की एनकैप्सुलेशन (KEM) और डिजिटल सिग्नेचर दोनों के लिए लागू।&lt;/li>
&lt;li>प्रसंस्करण गति बहुत तेज है (कुछ मामलों में RSA या ECC से भी तेज)।&lt;/li>
&lt;li>की (key) का आकार और सिफरटेक्स्ट का आकार अपेक्षाकृत छोटा और अच्छी तरह से संतुलित है।&lt;/li>
&lt;/ul>
&lt;p>वर्तमान में NIST द्वारा मानकीकृत अधिकांश एल्गोरिदम (जैसे ML-KEM और ML-DSA) इस लैटिस-आधारित क्रिप्टोग्राफी को अपनाते हैं।&lt;/p>
&lt;h3 id="2-हश-आधरत-करपटगरफ-hash-based-cryptography">2. हैश-आधारित क्रिप्टोग्राफी (Hash-based Cryptography)
&lt;/h3>&lt;p>हैश-आधारित क्रिप्टोग्राफी एक PQC एल्गोरिदम है जो डिजिटल सिग्नेचर में माहिर है। सुरक्षा का आधार पूरी तरह से SHA-2 और SHA-3 जैसे सुरक्षित &amp;ldquo;क्रिप्टोग्राफिक हैश फ़ंक्शंस&amp;rdquo; के टकराव प्रतिरोध (collision resistance) और एकतरफा (one-wayness) पर निर्भर करता है।&lt;/p>
&lt;p>&lt;strong>सिस्टम का अवलोकन:&lt;/strong>
शुरुआती बिंदु एक वन-टाइम सिग्नेचर स्कीम है जिसे &amp;ldquo;लैम्पोर्ट सिग्नेचर&amp;rdquo; (Lamport Signature) कहा जाता है, जिसका उपयोग केवल एक बार किया जा सकता है। &amp;ldquo;मर्कल ट्री&amp;rdquo; (Merkle Tree) नामक ट्री-संरचित डेटा प्रारूप में इन्हें बंडल करके, एक की-पेयर (key pair) के साथ कई सिग्नेचर संभव हो जाते हैं।&lt;/p>
&lt;p>&lt;strong>फायदे:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>सुरक्षा का आधार अत्यंत मजबूत है, और एक मजबूत प्रमाण है कि &amp;ldquo;यह तब तक सुरक्षित है जब तक हैश फ़ंक्शन सुरक्षित है&amp;rdquo;।&lt;/li>
&lt;li>गणितीय संरचनाओं पर कम निर्भरता के कारण, अप्रत्याशित डिक्रिप्शन विधियों के खोजे जाने का जोखिम कम है।&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>नुकसान:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>इसका उपयोग की शेयरिंग (KEM) के लिए नहीं किया जा सकता है, केवल डिजिटल सिग्नेचर के लिए।&lt;/li>
&lt;li>सिग्नेचर का आकार बड़ा हो जाता है।&lt;/li>
&lt;li>इसमें &amp;ldquo;स्टेटफुल&amp;rdquo; और &amp;ldquo;स्टेटलेस&amp;rdquo; प्रकार होते हैं, और स्टेटफुल प्रकार (जैसे XMSS) को लागू करना मुश्किल होता है क्योंकि की के उपयोग की संख्या को सख्ती से प्रबंधित करना आवश्यक होता है।&lt;/li>
&lt;/ul>
&lt;p>NIST ने &amp;ldquo;SLH-DSA (पूर्व में SPHINCS+)&amp;rdquo; को एक स्टेटलेस हैश-आधारित सिग्नेचर के रूप में मानकीकृत किया है।&lt;/p>
&lt;h3 id="3-मलटवरएट-पलनमयल-आधरत-करपटगरफ-multivariate-cryptography">3. मल्टीवेरिएट पॉलीनोमियल-आधारित क्रिप्टोग्राफी (Multivariate Cryptography)
&lt;/h3>&lt;p>मल्टीवेरिएट पॉलीनोमियल क्रिप्टोग्राफी एक ऐसी विधि है जिसकी सुरक्षा का आधार कई चर (MQ समस्या: Multivariate Quadratic problem) वाले एक साथ द्विघात बहुपदों की प्रणाली को हल करने की कठिनाई है। यह समस्या NP-hard मानी जाती है।&lt;/p>
&lt;p>&lt;strong>सिस्टम का अवलोकन:&lt;/strong>
प्रेषक एक सार्वजनिक कुंजी (पब्लिक की) के रूप में पारित कई चर वाले एक जटिल समीकरण में प्लेनटेक्स्ट (या हैश मान) को प्रतिस्थापित करके एक सिफरटेक्स्ट (सिग्नेचर) बनाता है। वैध प्राप्तकर्ता के पास एक निजी कुंजी (प्राइवेट की) के रूप में &amp;ldquo;समीकरण संरचना को आसानी से हल करने योग्य रूप में बदलने के लिए छिपी हुई जानकारी (ट्रैपडोर)&amp;rdquo; होती है, और वह डिक्रिप्शन (या सिग्नेचर वेरिफिकेशन) करने के लिए इसका उपयोग करता है।&lt;/p>
&lt;p>&lt;strong>फायदे:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>सिग्नेचर का आकार बहुत छोटा होता है।&lt;/li>
&lt;li>सिग्नेचर वेरिफिकेशन गति अत्यंत तेज है। यह सीमित संसाधनों वाले IoT उपकरणों आदि के लिए उपयुक्त है।&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>नुकसान:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>सार्वजनिक कुंजी (पब्लिक की) का आकार बहुत बड़ा होता है (यह दहाई या सैकड़ों किलोबाइट तक हो सकता है)।&lt;/li>
&lt;li>ऐसे मामले सामने आए हैं जहां अतीत में शक्तिशाली एल्गोरिदम (जैसे रेनबो) क्लासिकल हमलों से टूट गए थे, जिससे अन्य तरीकों की तुलना में इसकी सुरक्षा में विश्वास स्थापित करना अधिक कठिन हो गया।&lt;/li>
&lt;/ul>
&lt;h3 id="4-कड-आधरत-करपटगरफ-code-based-cryptography">4. कोड-आधारित क्रिप्टोग्राफी (Code-based Cryptography)
&lt;/h3>&lt;p>कोड-आधारित क्रिप्टोग्राफी संचार पथ पर त्रुटियों को ठीक करने के लिए उपयोग किए जाने वाले &amp;ldquo;त्रुटि-सुधार कोड&amp;rdquo; (Error-correcting codes) के सिद्धांत का क्रिप्टोग्राफी में अनुप्रयोग है। 1978 में प्रस्तावित &amp;ldquo;McEliece क्रिप्टोग्राफी&amp;rdquo; सबसे प्रसिद्ध है और यह PQC के सबसे पुराने तरीकों में से एक है।&lt;/p>
&lt;p>&lt;strong>सिस्टम का अवलोकन:&lt;/strong>
प्रेषक प्राप्तकर्ता की सार्वजनिक कुंजी (एक त्रुटि-सुधार कोड का जनरेटर मैट्रिक्स जिसकी विशिष्ट संरचना छिपी हुई है) का उपयोग करके प्लेनटेक्स्ट को एन्कोड करता है, जानबूझकर त्रुटियां (शोर) जोड़ता है और इसे भेजता है। प्राप्तकर्ता त्रुटियों को दूर करने और प्लेनटेक्स्ट को निकालने के लिए निजी कुंजी का उपयोग करता है। एक कोडब्रेकर को केवल एक यादृच्छिक कोड से त्रुटियों को ठीक करना होगा जिसकी संरचना वह नहीं जानता है, जिसे &amp;ldquo;सामान्य सिंड्रोम डिकोडिंग समस्या&amp;rdquo; (General Syndrome Decoding Problem) कहा जाता है, और यह साबित हो गया है कि यह NP-hard है।&lt;/p>
&lt;p>&lt;strong>फायदे:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>40 से अधिक वर्षों तक इसका गहन अध्ययन किया गया है, और अभी तक कोई प्रभावी हमले नहीं पाए गए हैं, इसलिए इसकी सुरक्षा विश्वसनीयता अत्यंत उच्च है।&lt;/li>
&lt;li>एन्क्रिप्शन और डिक्रिप्शन प्रोसेसिंग की गति तेज है।&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>नुकसान:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>सार्वजनिक कुंजी (पब्लिक की) का आकार बहुत विशाल है (यह कई मेगाबाइट तक हो सकता है)। इसलिए, इसे सीमित संचार बैंडविड्थ और मेमोरी (जैसे TLS हैंडशेक) वाले वातावरण में उपयोग करना मुश्किल है।&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="nist-दवर-pqc-मनककरण-क-नवनतम-रझन">NIST द्वारा PQC मानकीकरण के नवीनतम रुझान
&lt;/h2>&lt;p>यूएस नेशनल इंस्टीट्यूट ऑफ स्टैंडर्ड एंड टेक्नोलॉजी (NIST) ने 2016 में दुनिया भर से अगली पीढ़ी के पोस्ट-क्वांटम क्रिप्टोग्राफी एल्गोरिदम के लिए सार्वजनिक आह्वान शुरू किया और कई वर्षों तक कड़े मूल्यांकन और राउंड आयोजित किए हैं।&lt;/p>
&lt;p>2024 में, NIST ने अंततः निम्नलिखित तीन एल्गोरिदम को आधिकारिक संघीय सूचना प्रसंस्करण मानकों (FIPS) के रूप में घोषित किया। इसने दुनिया भर के संगठनों के लिए उत्पादन वातावरण में कार्यान्वयन शुरू करने के लिए एक ठोस आधार प्रदान किया है।&lt;/p>
&lt;h3 id="सथपत-fips-मनक-2024">स्थापित FIPS मानक (2024)
&lt;/h3>&lt;ol>
&lt;li>
&lt;p>&lt;strong>FIPS 203: ML-KEM (पूर्व नाम: CRYSTALS-Kyber)&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>अनुप्रयोग:&lt;/strong> की एनकैप्सुलेशन मैकेनिज्म (KEM) / एन्क्रिप्शन और की शेयरिंग&lt;/li>
&lt;li>&lt;strong>आधार तकनीक:&lt;/strong> लैटिस क्रिप्टोग्राफी (Module-LWE)&lt;/li>
&lt;li>&lt;strong>विशेषताएं:&lt;/strong> की (key) के आकार और गति के बीच बहुत अच्छा संतुलन है, और यह वेब संचार (TLS) और सुरक्षित मैसेजिंग ऐप्स जैसे सामान्य इंटरनेट अनुप्रयोगों के लिए डिफ़ॉल्ट PQC की शेयरिंग के रूप में कार्य करता है।&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>FIPS 204: ML-DSA (पूर्व नाम: CRYSTALS-Dilithium)&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>अनुप्रयोग:&lt;/strong> डिजिटल सिग्नेचर&lt;/li>
&lt;li>&lt;strong>आधार तकनीक:&lt;/strong> लैटिस क्रिप्टोग्राफी (Module-LWE)&lt;/li>
&lt;li>&lt;strong>विशेषताएं:&lt;/strong> डिजिटल सिग्नेचर के लिए प्रमुख मानक। यह कुशल प्रसंस्करण में सक्षम है और सॉफ़्टवेयर सिग्नेचर और दस्तावेज़ प्रमाणीकरण जैसे सभी इलेक्ट्रॉनिक हस्ताक्षर अनुप्रयोगों के लिए नया मानक होगा।&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>FIPS 205: SLH-DSA (पूर्व नाम: SPHINCS+)&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>&lt;strong>अनुप्रयोग:&lt;/strong> डिजिटल सिग्नेचर&lt;/li>
&lt;li>&lt;strong>आधार तकनीक:&lt;/strong> हैश-आधारित क्रिप्टोग्राफी (स्टेटलेस)&lt;/li>
&lt;li>&lt;strong>विशेषताएं:&lt;/strong> यह इस अवांछित स्थिति में एक बैकअप के रूप में कार्य करता है कि भविष्य में लैटिस क्रिप्टोग्राफी में कोई भेद्यता पाई जाए, इसलिए यह एक अत्यंत महत्वपूर्ण भूमिका निभाता है। सिग्नेचर का आकार बड़ा होता है, लेकिन यह उन अनुप्रयोगों के लिए उपयुक्त है जहाँ दीर्घकालिक विश्वसनीयता की आवश्यकता होती है।&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ol>
&lt;h3 id="ववधत-क-लए-आग-क-खज">विविधता के लिए आगे की खोज
&lt;/h3>&lt;p>हालाँकि NIST ने प्रारंभिक मानकीकरण प्रक्रिया पूरी कर ली है, लेकिन यह और अधिक एल्गोरिदम खोजना जारी रखे हुए है। विशेष रूप से, चूँकि मानक &amp;ldquo;लैटिस क्रिप्टोग्राफी&amp;rdquo; की ओर झुके हुए हैं, &lt;strong>एल्गोरिदम विविधता (Crypto Diversity)&lt;/strong> सुनिश्चित करना महत्वपूर्ण माना जाता है। कोड-आधारित क्रिप्टोग्राफी का मूल्यांकन की शेयरिंग के लिए बैकअप मानक के रूप में किया जा रहा है, और भविष्य में PQC की नींव और भी मजबूत हो जाएगी।&lt;/p>
&lt;hr>
&lt;h2 id="pqc-मइगरशन-परदशय-और-चनतय-करपट-एजलट-क-महतव">PQC माइग्रेशन परिदृश्य और चुनौतियाँ: &amp;ldquo;क्रिप्टो-एजिलिटी&amp;rdquo; का महत्व
&lt;/h2>&lt;p>NIST से आधिकारिक मानकों के जारी होने के साथ, दुनिया भर की सरकारी एजेंसियां, वित्तीय संस्थान और प्रौद्योगिकी कंपनियां मौजूदा RSA/ECC से PQC की ओर माइग्रेशन (स्थानांतरण) में तेजी ला रही हैं। NSA (यूएस नेशनल सिक्योरिटी एजेंसी) के दिशानिर्देश भी माइग्रेशन के शीघ्र पूरा होने की सलाह देते हैं।&lt;/p>
&lt;h3 id="हइबरड-दषटकण-अपनन">हाइब्रिड दृष्टिकोण अपनाना
&lt;/h3>&lt;p>चूँकि PQC एल्गोरिदम नए हैं, इसलिए उन्होंने क्लासिकल क्रिप्टोग्राफी की तुलना में &amp;ldquo;समय की कसौटी&amp;rdquo; का सामना नहीं किया है। कार्यान्वयन में छिपे बग और नई हमले की तकनीकों के खोजे जाने के जोखिम को ध्यान में रखते हुए, संक्रमण काल के दौरान एक &lt;strong>&amp;ldquo;हाइब्रिड विधि&amp;rdquo;&lt;/strong> (Hybrid method) की सिफारिश की जाती है। यह की एक्सचेंज (key exchange) करने के लिए एक स्थापित मौजूदा क्रिप्टोग्राफी (जैसे ECDHE) और एक नए PQC (जैसे ML-KEM) को संयोजित करने की एक विधि है। वर्तमान में, प्रमुख ब्राउज़रों और क्लाउड सेवाओं में इस पद्धति की परीक्षण-प्रस्तुति तेजी से आगे बढ़ रही है।&lt;/p>
&lt;h3 id="करपट-एजलट-करपटगरफक-चपलत-क-परपत-करन">क्रिप्टो-एजिलिटी (क्रिप्टोग्राफिक चपलता) को प्राप्त करना
&lt;/h3>&lt;p>कंपनियों और सिस्टम डेवलपर्स को भविष्य में जिस चीज के बारे में सबसे ज्यादा जागरूक होना चाहिए, वह है &lt;strong>&amp;ldquo;क्रिप्टो-एजिलिटी&amp;rdquo; (Crypto-Agility)&lt;/strong> सुनिश्चित करना। यदि भविष्य में किसी एल्गोरिदम में कोई दोष पाया जाता है বাধ या कोई नया मानक सामने आता है, तो एक लचीले आर्किटेक्चर डिज़ाइन का होना आवश्यक है जो सिस्टम को रोके बिना क्रिप्टोग्राफ़िक एल्गोरिदम को तुरंत बदल और अपडेट कर सके।&lt;/p>
&lt;p>एक क्रिप्टोग्राफ़िक इन्वेंट्री (CBOM: Cryptography Bill of Materials) बनाना जो सटीक रूप से पहचानती है कि आपके सिस्टम के भीतर &amp;ldquo;कहाँ&amp;rdquo;, &amp;ldquo;कौन सी क्रिप्टोग्राफी&amp;rdquo;, और &amp;ldquo;किस उद्देश्य से&amp;rdquo; उपयोग की जा रही है, PQC माइग्रेशन की दिशा में पहला महत्वपूर्ण कदम है।&lt;/p>
&lt;hr>
&lt;h2 id="नषकरष-आन-वल-q-day-क-तयर">निष्कर्ष: आने वाले &amp;ldquo;Q-Day&amp;rdquo; की तैयारी
&lt;/h2>&lt;p>क्वांटम कंप्यूटर का विकास जहाँ एक ओर मानवता को बड़े लाभ पहुँचाता है, वहीं दूसरी ओर यह क्रिप्टोग्राफिक सुरक्षा के लिए सबसे बड़ा खतरा भी है, जो हमारे वर्तमान डिजिटल समाज का आधार है। पोस्ट-क्वांटम क्रिप्टोग्राफी (PQC) अब कोई &amp;ldquo;सुदूर भविष्य का शोध विषय&amp;rdquo; नहीं है। NIST द्वारा FIPS मानकों को जारी करने के मील के पत्थर के साथ, PQC पूरे पैमाने पर &amp;ldquo;कार्यान्वयन और माइग्रेशन&amp;rdquo; चरण में प्रवेश कर गया है।&lt;/p>
&lt;p>&amp;ldquo;Harvest Now, Decrypt Later&amp;rdquo; के खतरे को ध्यान में रखते हुए, PQC में माइग्रेशन उच्च-गोपनीयता वाले डेटा को संभालने वाले सभी संगठनों के लिए &amp;ldquo;अभी&amp;rdquo; निपटने के लिए एक सर्वोच्च प्राथमिकता है। आइए अगली पीढ़ी की क्रिप्टोग्राफ़िक तकनीक को गहराई से समझकर और सिस्टम की क्रिप्टो-एजिलिटी को बढ़ाकर आने वाले क्वांटम कंप्यूटर युग को सुरक्षित रूप से पार करें।&lt;/p></description></item><item><title>【संपूर्ण विश्लेषण】C++ में लागू करके सबसे शक्तिशाली क्रिप्टोग्राफी क्रैकिंग एल्गोरिदम "GNFS" को समझना</title><link>http://kenji.blog/hi/p/gnfs-cpp-implementation/</link><pubDate>Sat, 05 Sep 2026 13:04:59 +0900</pubDate><guid>http://kenji.blog/hi/p/gnfs-cpp-implementation/</guid><description>&lt;img src="http://kenji.blog/p/gnfs-cpp-implementation/gnfs_cpp_blog_eyecatch_1788580949217.jpg" alt="Featured image of post 【संपूर्ण विश्लेषण】C++ में लागू करके सबसे शक्तिशाली क्रिप्टोग्राफी क्रैकिंग एल्गोरिदम "GNFS" को समझना" />&lt;h1 id="सपरण-वशलषणc-म-लग-करक-सबस-शकतशल-करपटगरफ-करकग-एलगरदम-gnfs-क-समझन">【संपूर्ण विश्लेषण】C++ में लागू करके सबसे शक्तिशाली क्रिप्टोग्राफी क्रैकिंग एल्गोरिदम &amp;ldquo;GNFS&amp;rdquo; को समझना
&lt;/h1>&lt;p>आधुनिक इंटरनेट का आधार &amp;ldquo;RSA क्रिप्टोग्राफी&amp;rdquo; है। इसकी मजबूती इस गणितीय विश्वास पर निर्भर करती है कि &amp;ldquo;वर्तमान कंप्यूटरों के लिए एक विशाल भाज्य संख्या (composite number) का अभाज्य गुणनखंडन (prime factorization) करना लगभग असंभव है&amp;rdquo;।&lt;/p>
&lt;p>हालाँकि, मानवता ने कभी हार नहीं मानी है। वर्तमान में, क्लासिकल कंप्यूटरों (सामान्य कंप्यूटर, न कि क्वांटम कंप्यूटर) पर विशाल अभाज्य गुणनखंडन करने के लिए ** मानवता का सबसे शक्तिशाली और उन्नत एल्गोरिदम ** मौजूद है। वह है ** &amp;ldquo;सामान्य संख्या क्षेत्र चलनी (GNFS: General Number Field Sieve)&amp;rdquo; ** ।&lt;/p>
&lt;p>इस लेख में, हम इस GNFS के अत्याधुनिक संगणना लॉजिक को C++ (Boost लाइब्रेरी के मल्टीपल-प्रिसीजन इंटीजर &lt;code>boost::multiprecision&lt;/code> का उपयोग करके) में सख्ती से मॉडल किए गए कार्यान्वयन कोड को पूरी तरह से प्रकाशित करेंगे, और इसके पीछे &amp;ldquo;बीजीय संख्या सिद्धांत (Algebraic Number Theory)&amp;rdquo; की गहराइयों को विस्तार से समझाएंगे।&lt;/p>
&lt;p>कृपया स्रोत कोड के साथ गणित के रहस्य और कंप्यूटर विज्ञान की उस शक्ति का आनंद लें जो इसे मात देती है।&lt;/p>
&lt;hr>
&lt;h2 id="1-gnfs-अतयधनक-लजक-फरमवरक-सपरण-सरत-कड">1. GNFS अत्याधुनिक लॉजिक फ्रेमवर्क (संपूर्ण स्रोत कोड)
&lt;/h2>&lt;p>सबसे पहले, हम इस बार समझाए जाने वाले GNFS के C++ कार्यान्वयन का पूरा दृश्य प्रस्तुत करेंगे। वास्तविक संख्या क्षेत्र चलनी (जैसे CADO-NFS) लाखों पंक्तियों वाला एक विशाल वितरित सिस्टम है, लेकिन यह कोड GNFS को बनाने वाले ** &amp;ldquo;5 आवश्यक पाइपलाइनों (चरणों)&amp;rdquo; ** को निकालता है, उन्हें क्लास के रूप में डिज़ाइन करता है, और गणितीय अर्थ खोए बिना न्यूनतम कॉन्फ़िगरेशन के साथ मॉडल करता है।&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt"> 10
&lt;/span>&lt;span class="lnt"> 11
&lt;/span>&lt;span class="lnt"> 12
&lt;/span>&lt;span class="lnt"> 13
&lt;/span>&lt;span class="lnt"> 14
&lt;/span>&lt;span class="lnt"> 15
&lt;/span>&lt;span class="lnt"> 16
&lt;/span>&lt;span class="lnt"> 17
&lt;/span>&lt;span class="lnt"> 18
&lt;/span>&lt;span class="lnt"> 19
&lt;/span>&lt;span class="lnt"> 20
&lt;/span>&lt;span class="lnt"> 21
&lt;/span>&lt;span class="lnt"> 22
&lt;/span>&lt;span class="lnt"> 23
&lt;/span>&lt;span class="lnt"> 24
&lt;/span>&lt;span class="lnt"> 25
&lt;/span>&lt;span class="lnt"> 26
&lt;/span>&lt;span class="lnt"> 27
&lt;/span>&lt;span class="lnt"> 28
&lt;/span>&lt;span class="lnt"> 29
&lt;/span>&lt;span class="lnt"> 30
&lt;/span>&lt;span class="lnt"> 31
&lt;/span>&lt;span class="lnt"> 32
&lt;/span>&lt;span class="lnt"> 33
&lt;/span>&lt;span class="lnt"> 34
&lt;/span>&lt;span class="lnt"> 35
&lt;/span>&lt;span class="lnt"> 36
&lt;/span>&lt;span class="lnt"> 37
&lt;/span>&lt;span class="lnt"> 38
&lt;/span>&lt;span class="lnt"> 39
&lt;/span>&lt;span class="lnt"> 40
&lt;/span>&lt;span class="lnt"> 41
&lt;/span>&lt;span class="lnt"> 42
&lt;/span>&lt;span class="lnt"> 43
&lt;/span>&lt;span class="lnt"> 44
&lt;/span>&lt;span class="lnt"> 45
&lt;/span>&lt;span class="lnt"> 46
&lt;/span>&lt;span class="lnt"> 47
&lt;/span>&lt;span class="lnt"> 48
&lt;/span>&lt;span class="lnt"> 49
&lt;/span>&lt;span class="lnt"> 50
&lt;/span>&lt;span class="lnt"> 51
&lt;/span>&lt;span class="lnt"> 52
&lt;/span>&lt;span class="lnt"> 53
&lt;/span>&lt;span class="lnt"> 54
&lt;/span>&lt;span class="lnt"> 55
&lt;/span>&lt;span class="lnt"> 56
&lt;/span>&lt;span class="lnt"> 57
&lt;/span>&lt;span class="lnt"> 58
&lt;/span>&lt;span class="lnt"> 59
&lt;/span>&lt;span class="lnt"> 60
&lt;/span>&lt;span class="lnt"> 61
&lt;/span>&lt;span class="lnt"> 62
&lt;/span>&lt;span class="lnt"> 63
&lt;/span>&lt;span class="lnt"> 64
&lt;/span>&lt;span class="lnt"> 65
&lt;/span>&lt;span class="lnt"> 66
&lt;/span>&lt;span class="lnt"> 67
&lt;/span>&lt;span class="lnt"> 68
&lt;/span>&lt;span class="lnt"> 69
&lt;/span>&lt;span class="lnt"> 70
&lt;/span>&lt;span class="lnt"> 71
&lt;/span>&lt;span class="lnt"> 72
&lt;/span>&lt;span class="lnt"> 73
&lt;/span>&lt;span class="lnt"> 74
&lt;/span>&lt;span class="lnt"> 75
&lt;/span>&lt;span class="lnt"> 76
&lt;/span>&lt;span class="lnt"> 77
&lt;/span>&lt;span class="lnt"> 78
&lt;/span>&lt;span class="lnt"> 79
&lt;/span>&lt;span class="lnt"> 80
&lt;/span>&lt;span class="lnt"> 81
&lt;/span>&lt;span class="lnt"> 82
&lt;/span>&lt;span class="lnt"> 83
&lt;/span>&lt;span class="lnt"> 84
&lt;/span>&lt;span class="lnt"> 85
&lt;/span>&lt;span class="lnt"> 86
&lt;/span>&lt;span class="lnt"> 87
&lt;/span>&lt;span class="lnt"> 88
&lt;/span>&lt;span class="lnt"> 89
&lt;/span>&lt;span class="lnt"> 90
&lt;/span>&lt;span class="lnt"> 91
&lt;/span>&lt;span class="lnt"> 92
&lt;/span>&lt;span class="lnt"> 93
&lt;/span>&lt;span class="lnt"> 94
&lt;/span>&lt;span class="lnt"> 95
&lt;/span>&lt;span class="lnt"> 96
&lt;/span>&lt;span class="lnt"> 97
&lt;/span>&lt;span class="lnt"> 98
&lt;/span>&lt;span class="lnt"> 99
&lt;/span>&lt;span class="lnt">100
&lt;/span>&lt;span class="lnt">101
&lt;/span>&lt;span class="lnt">102
&lt;/span>&lt;span class="lnt">103
&lt;/span>&lt;span class="lnt">104
&lt;/span>&lt;span class="lnt">105
&lt;/span>&lt;span class="lnt">106
&lt;/span>&lt;span class="lnt">107
&lt;/span>&lt;span class="lnt">108
&lt;/span>&lt;span class="lnt">109
&lt;/span>&lt;span class="lnt">110
&lt;/span>&lt;span class="lnt">111
&lt;/span>&lt;span class="lnt">112
&lt;/span>&lt;span class="lnt">113
&lt;/span>&lt;span class="lnt">114
&lt;/span>&lt;span class="lnt">115
&lt;/span>&lt;span class="lnt">116
&lt;/span>&lt;span class="lnt">117
&lt;/span>&lt;span class="lnt">118
&lt;/span>&lt;span class="lnt">119
&lt;/span>&lt;span class="lnt">120
&lt;/span>&lt;span class="lnt">121
&lt;/span>&lt;span class="lnt">122
&lt;/span>&lt;span class="lnt">123
&lt;/span>&lt;span class="lnt">124
&lt;/span>&lt;span class="lnt">125
&lt;/span>&lt;span class="lnt">126
&lt;/span>&lt;span class="lnt">127
&lt;/span>&lt;span class="lnt">128
&lt;/span>&lt;span class="lnt">129
&lt;/span>&lt;span class="lnt">130
&lt;/span>&lt;span class="lnt">131
&lt;/span>&lt;span class="lnt">132
&lt;/span>&lt;span class="lnt">133
&lt;/span>&lt;span class="lnt">134
&lt;/span>&lt;span class="lnt">135
&lt;/span>&lt;span class="lnt">136
&lt;/span>&lt;span class="lnt">137
&lt;/span>&lt;span class="lnt">138
&lt;/span>&lt;span class="lnt">139
&lt;/span>&lt;span class="lnt">140
&lt;/span>&lt;span class="lnt">141
&lt;/span>&lt;span class="lnt">142
&lt;/span>&lt;span class="lnt">143
&lt;/span>&lt;span class="lnt">144
&lt;/span>&lt;span class="lnt">145
&lt;/span>&lt;span class="lnt">146
&lt;/span>&lt;span class="lnt">147
&lt;/span>&lt;span class="lnt">148
&lt;/span>&lt;span class="lnt">149
&lt;/span>&lt;span class="lnt">150
&lt;/span>&lt;span class="lnt">151
&lt;/span>&lt;span class="lnt">152
&lt;/span>&lt;span class="lnt">153
&lt;/span>&lt;span class="lnt">154
&lt;/span>&lt;span class="lnt">155
&lt;/span>&lt;span class="lnt">156
&lt;/span>&lt;span class="lnt">157
&lt;/span>&lt;span class="lnt">158
&lt;/span>&lt;span class="lnt">159
&lt;/span>&lt;span class="lnt">160
&lt;/span>&lt;span class="lnt">161
&lt;/span>&lt;span class="lnt">162
&lt;/span>&lt;span class="lnt">163
&lt;/span>&lt;span class="lnt">164
&lt;/span>&lt;span class="lnt">165
&lt;/span>&lt;span class="lnt">166
&lt;/span>&lt;span class="lnt">167
&lt;/span>&lt;span class="lnt">168
&lt;/span>&lt;span class="lnt">169
&lt;/span>&lt;span class="lnt">170
&lt;/span>&lt;span class="lnt">171
&lt;/span>&lt;span class="lnt">172
&lt;/span>&lt;span class="lnt">173
&lt;/span>&lt;span class="lnt">174
&lt;/span>&lt;span class="lnt">175
&lt;/span>&lt;span class="lnt">176
&lt;/span>&lt;span class="lnt">177
&lt;/span>&lt;span class="lnt">178
&lt;/span>&lt;span class="lnt">179
&lt;/span>&lt;span class="lnt">180
&lt;/span>&lt;span class="lnt">181
&lt;/span>&lt;span class="lnt">182
&lt;/span>&lt;span class="lnt">183
&lt;/span>&lt;span class="lnt">184
&lt;/span>&lt;span class="lnt">185
&lt;/span>&lt;span class="lnt">186
&lt;/span>&lt;span class="lnt">187
&lt;/span>&lt;span class="lnt">188
&lt;/span>&lt;span class="lnt">189
&lt;/span>&lt;span class="lnt">190
&lt;/span>&lt;span class="lnt">191
&lt;/span>&lt;span class="lnt">192
&lt;/span>&lt;span class="lnt">193
&lt;/span>&lt;span class="lnt">194
&lt;/span>&lt;span class="lnt">195
&lt;/span>&lt;span class="lnt">196
&lt;/span>&lt;span class="lnt">197
&lt;/span>&lt;span class="lnt">198
&lt;/span>&lt;span class="lnt">199
&lt;/span>&lt;span class="lnt">200
&lt;/span>&lt;span class="lnt">201
&lt;/span>&lt;span class="lnt">202
&lt;/span>&lt;span class="lnt">203
&lt;/span>&lt;span class="lnt">204
&lt;/span>&lt;span class="lnt">205
&lt;/span>&lt;span class="lnt">206
&lt;/span>&lt;span class="lnt">207
&lt;/span>&lt;span class="lnt">208
&lt;/span>&lt;span class="lnt">209
&lt;/span>&lt;span class="lnt">210
&lt;/span>&lt;span class="lnt">211
&lt;/span>&lt;span class="lnt">212
&lt;/span>&lt;span class="lnt">213
&lt;/span>&lt;span class="lnt">214
&lt;/span>&lt;span class="lnt">215
&lt;/span>&lt;span class="lnt">216
&lt;/span>&lt;span class="lnt">217
&lt;/span>&lt;span class="lnt">218
&lt;/span>&lt;span class="lnt">219
&lt;/span>&lt;span class="lnt">220
&lt;/span>&lt;span class="lnt">221
&lt;/span>&lt;span class="lnt">222
&lt;/span>&lt;span class="lnt">223
&lt;/span>&lt;span class="lnt">224
&lt;/span>&lt;span class="lnt">225
&lt;/span>&lt;span class="lnt">226
&lt;/span>&lt;span class="lnt">227
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-cpp" data-lang="cpp">&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#include&lt;/span> &lt;span class="cpf">&amp;lt;iostream&amp;gt;&lt;/span>&lt;span class="cp">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#include&lt;/span> &lt;span class="cpf">&amp;lt;vector&amp;gt;&lt;/span>&lt;span class="cp">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#include&lt;/span> &lt;span class="cpf">&amp;lt;cmath&amp;gt;&lt;/span>&lt;span class="cp">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#include&lt;/span> &lt;span class="cpf">&amp;lt;map&amp;gt;&lt;/span>&lt;span class="cp">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#include&lt;/span> &lt;span class="cpf">&amp;lt;set&amp;gt;&lt;/span>&lt;span class="cp">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#include&lt;/span> &lt;span class="cpf">&amp;lt;chrono&amp;gt;&lt;/span>&lt;span class="cp">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">#include&lt;/span> &lt;span class="cpf">&amp;lt;boost/multiprecision/cpp_int.hpp&amp;gt;&lt;/span>&lt;span class="cp">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="cp">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// Boost.Multiprecision के मल्टीपल-प्रिसीजन इंटीजर का उपयोग
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="k">using&lt;/span> &lt;span class="k">namespace&lt;/span> &lt;span class="n">boost&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">multiprecision&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// ============================================================================
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// [SOTA GNFS] General Number Field Sieve (सामान्य संख्या क्षेत्र चलनी) अत्याधुनिक लॉजिक फ्रेमवर्क
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">//
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// यह कोड CADO-NFS आदि में उपयोग किए जाने वाले अत्याधुनिक GNFS के 5 पाइपलाइनों को
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// C++ (Boost) क्लास डिज़ाइन के रूप में सख्ती से मॉडल करता है।
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// ============================================================================
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">struct&lt;/span> &lt;span class="nc">Relation&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">int64_t&lt;/span> &lt;span class="n">a&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">int64_t&lt;/span> &lt;span class="n">b&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">vector&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="kt">uint32_t&lt;/span>&lt;span class="o">&amp;gt;&lt;/span> &lt;span class="n">rational_primes&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">vector&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="kt">uint32_t&lt;/span>&lt;span class="o">&amp;gt;&lt;/span> &lt;span class="n">algebraic_primes&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">};&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// ============================================================================
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// Phase 1: Polynomial Selection (KleinJung का एल्गोरिदम)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// ============================================================================
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="k">class&lt;/span> &lt;span class="nc">PolynomialSelector&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">public&lt;/span>&lt;span class="o">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">int&lt;/span> &lt;span class="n">degree&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">vector&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="n">cpp_int&lt;/span>&lt;span class="o">&amp;gt;&lt;/span> &lt;span class="n">f&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="c1">// बीजीय पक्ष बहुपद f(x)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">vector&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="n">cpp_int&lt;/span>&lt;span class="o">&amp;gt;&lt;/span> &lt;span class="n">g&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="c1">// परिमेय पक्ष बहुपद g(x) = x - m
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">cpp_int&lt;/span> &lt;span class="n">m&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">PolynomialSelector&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="kt">int&lt;/span> &lt;span class="n">d&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">:&lt;/span> &lt;span class="n">degree&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">d&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// base-m विस्तार के आधार पर प्रारंभिक बहुपद का निर्माण (वास्तव में अधिक उन्नत जालक आधार न्यूनीकरण LLL का उपयोग किया जाता है)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="kt">void&lt;/span> &lt;span class="nf">select&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="k">const&lt;/span> &lt;span class="n">cpp_int&lt;/span>&lt;span class="o">&amp;amp;&lt;/span> &lt;span class="n">N&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">cout&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34;[Phase 1] Polynomial Selection (Degree &amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">degree&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34;) starting...&amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">endl&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// सरल base-m विस्तार (d घात)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="c1">// m = N^(1/d)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">cpp_int&lt;/span> &lt;span class="n">N_copy&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">N&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">m&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// सरल m का अनुमान (Boost फ़ंक्शन के बिना अनुमान)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">cpp_int&lt;/span> &lt;span class="n">low&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">high&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">N&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">while&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">low&lt;/span> &lt;span class="o">&amp;lt;=&lt;/span> &lt;span class="n">high&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">cpp_int&lt;/span> &lt;span class="n">mid&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">low&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">high&lt;/span> &lt;span class="o">-&lt;/span> &lt;span class="n">low&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">/&lt;/span> &lt;span class="mi">2&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">cpp_int&lt;/span> &lt;span class="n">p&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">for&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="kt">int&lt;/span> &lt;span class="n">i&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="n">i&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="n">degree&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="o">++&lt;/span>&lt;span class="n">i&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="n">p&lt;/span> &lt;span class="o">*=&lt;/span> &lt;span class="n">mid&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">p&lt;/span> &lt;span class="o">&amp;lt;=&lt;/span> &lt;span class="n">N&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="n">m&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">mid&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="n">low&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">mid&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">else&lt;/span> &lt;span class="p">{&lt;/span> &lt;span class="n">high&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">mid&lt;/span> &lt;span class="o">-&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">f&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">resize&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">degree&lt;/span> &lt;span class="o">+&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">cpp_int&lt;/span> &lt;span class="n">temp&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">N&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">for&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="kt">int&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="o">&amp;lt;=&lt;/span> &lt;span class="n">degree&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="o">++&lt;/span>&lt;span class="n">i&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">f&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="n">i&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">temp&lt;/span> &lt;span class="o">%&lt;/span> &lt;span class="n">m&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">temp&lt;/span> &lt;span class="o">/=&lt;/span> &lt;span class="n">m&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">g&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">{&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">m&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">};&lt;/span> &lt;span class="c1">// g(x) = x - m
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">cout&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34; -&amp;gt; m = &amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">m&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">endl&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">cout&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34; -&amp;gt; f(x) = &amp;#34;&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">for&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="kt">int&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">degree&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="o">&amp;gt;=&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="o">--&lt;/span>&lt;span class="n">i&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">cout&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">f&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="n">i&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34;x^&amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">i&lt;/span> &lt;span class="o">&amp;gt;&lt;/span> &lt;span class="mi">0&lt;/span> &lt;span class="o">?&lt;/span> &lt;span class="s">&amp;#34; + &amp;#34;&lt;/span> &lt;span class="o">:&lt;/span> &lt;span class="s">&amp;#34;&amp;#34;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">cout&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34;&lt;/span>&lt;span class="se">\n&lt;/span>&lt;span class="s">[Phase 1] Complete.&amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">endl&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">};&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// ============================================================================
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// Phase 2: Lattice Sieving (जालक चलनी)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// ============================================================================
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// हाल के वर्षों में GNFS में Line Sieve (सरल रेखा चलनी) के बजाय Franke-Kleinjung आदि द्वारा
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// Special-q Lattice Sieving (विशेष-q जालक चलनी) का उपयोग करना डिफ़ॉल्ट मानक है।
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="k">class&lt;/span> &lt;span class="nc">LatticeSieve&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">uint32_t&lt;/span> &lt;span class="n">rational_bound&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">uint32_t&lt;/span> &lt;span class="n">algebraic_bound&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">vector&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="kt">uint32_t&lt;/span>&lt;span class="o">&amp;gt;&lt;/span> &lt;span class="n">rational_fb&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">vector&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="kt">uint32_t&lt;/span>&lt;span class="o">&amp;gt;&lt;/span> &lt;span class="n">algebraic_fb&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">public&lt;/span>&lt;span class="o">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">LatticeSieve&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="kt">uint32_t&lt;/span> &lt;span class="n">rb&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="kt">uint32_t&lt;/span> &lt;span class="n">ab&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="o">:&lt;/span> &lt;span class="n">rational_bound&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">rb&lt;/span>&lt;span class="p">),&lt;/span> &lt;span class="n">algebraic_bound&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">ab&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">void&lt;/span> &lt;span class="nf">generate_factor_bases&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">cout&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34;[Phase 2] Generating Factor Bases (Rational Bound: &amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">rational_bound&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34;, Algebraic Bound: &amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">algebraic_bound&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34;)&amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">endl&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// (छोड़ा गया) वास्तव में अभाज्य संख्या निर्माण और लेजेंड्रे प्रतीक आदि से फ़िल्टरिंग की जाती है
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">vector&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="n">Relation&lt;/span>&lt;span class="o">&amp;gt;&lt;/span> &lt;span class="n">sieve&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="k">const&lt;/span> &lt;span class="n">PolynomialSelector&lt;/span>&lt;span class="o">&amp;amp;&lt;/span> &lt;span class="n">poly&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">cout&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34;[Phase 2] Special-q Lattice Sieving active...&amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">endl&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">vector&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="n">Relation&lt;/span>&lt;span class="o">&amp;gt;&lt;/span> &lt;span class="n">relations&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// मॉक कार्यान्वयन: वास्तविक जालक चलनी सैकड़ों GB मेमोरी स्पेस को ब्लॉक द्वारा स्कैन करती है
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="c1">// (a, b) युग्मों को विशेष अभाज्य q के जालक (a = i*q + j*...) में मैप करती है,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="c1">// और कैश दक्षता को अधिकतम करने वाली चलनी (sieve) चलाती है।
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// डेमो के लिए एक डमी रिलेशन जोड़ा गया
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">Relation&lt;/span> &lt;span class="n">r&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="n">r&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">a&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">17&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="n">r&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">b&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">3&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">r&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">rational_primes&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">{&lt;/span>&lt;span class="mi">2&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">5&lt;/span>&lt;span class="p">};&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">r&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">algebraic_primes&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">{&lt;/span>&lt;span class="mi">3&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">7&lt;/span>&lt;span class="p">};&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">relations&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">push_back&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">r&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">cout&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34;[Phase 2] Found &amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">relations&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">size&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34; relations.&amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">endl&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="n">relations&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">};&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// ============================================================================
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// Phase 3: Filtering (सिंगलटन रिमूवल और क्लीक मर्जिंग)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// ============================================================================
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="k">class&lt;/span> &lt;span class="nc">Filter&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">public&lt;/span>&lt;span class="o">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">void&lt;/span> &lt;span class="n">reduce_matrix&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">vector&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="n">Relation&lt;/span>&lt;span class="o">&amp;gt;&amp;amp;&lt;/span> &lt;span class="n">relations&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">cout&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34;[Phase 3] Filtering Relations...&amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">endl&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// 1. Singleton removal (केवल 1 बार आने वाले अभाज्य संख्या वाले रिलेशन को हटाना)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="c1">// 2. Clique merging (विरल मैट्रिक्स को सघन बनाने के लिए रिलेशन को मिलाना)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="c1">// वास्तव में यूनियन-फाइंड एल्गोरिदम आदि द्वारा करोड़ों पंक्तियों वाले मैट्रिक्स को लाखों पंक्तियों में संकुचित किया जाता है।
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">cout&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34;[Phase 3] Matrix size reduced optimally.&amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">endl&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">};&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// ============================================================================
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// Phase 4: Linear Algebra over GF(2) (Block Wiedemann विधि)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// ============================================================================
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="k">class&lt;/span> &lt;span class="nc">LinearAlgebraGF2&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">public&lt;/span>&lt;span class="o">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// हाल के सुपरकंप्यूटर वातावरण में Block Lanczos विधि की तुलना में, वितरित कंप्यूटिंग के लिए
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="c1">// अधिक उपयुक्त Block Wiedemann विधि (Coppersmith कार्यान्वयन) को अत्याधुनिक माना जाता है।
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">vector&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">vector&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="kt">int&lt;/span>&lt;span class="o">&amp;gt;&amp;gt;&lt;/span> &lt;span class="n">solve_nullspace&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="k">const&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">vector&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="n">Relation&lt;/span>&lt;span class="o">&amp;gt;&amp;amp;&lt;/span> &lt;span class="n">relations&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">cout&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34;[Phase 4] Block Wiedemann algorithm over GF(2) starting...&amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">endl&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// विरल मैट्रिक्स (sparse matrix) और वेक्टर के गुणन की पुनरावृत्ति करके,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="c1">// M * x = 0 mod 2 को संतुष्ट करने वाले कई हल वेक्टर (कर्नेल) खोजना।
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">vector&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">vector&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="kt">int&lt;/span>&lt;span class="o">&amp;gt;&amp;gt;&lt;/span> &lt;span class="n">dependencies&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="c1">// निर्भरता की सूची
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="c1">// डमी डेटा
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">dependencies&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">push_back&lt;/span>&lt;span class="p">({&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">});&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">cout&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34;[Phase 4] Found &amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">dependencies&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">size&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34; linear dependencies (perfect squares).&amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">endl&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="n">dependencies&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">};&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// ============================================================================
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// Phase 5: Algebraic Square Root (बीजीय वर्गमूल)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// ============================================================================
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="k">class&lt;/span> &lt;span class="nc">AlgebraicSquareRoot&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">public&lt;/span>&lt;span class="o">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">void&lt;/span> &lt;span class="n">compute_and_factor&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="k">const&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">vector&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="n">Relation&lt;/span>&lt;span class="o">&amp;gt;&amp;amp;&lt;/span> &lt;span class="n">relations&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="k">const&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">vector&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="kt">int&lt;/span>&lt;span class="o">&amp;gt;&amp;amp;&lt;/span> &lt;span class="n">dep&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="k">const&lt;/span> &lt;span class="n">cpp_int&lt;/span>&lt;span class="o">&amp;amp;&lt;/span> &lt;span class="n">N&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">cout&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34;[Phase 5] Algebraic Square Root computation...&amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">endl&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// 1. परिमेय पक्ष का वर्गमूल V की गणना (सरल पूर्णांक गणना)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">cpp_int&lt;/span> &lt;span class="n">V&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// V = sqrt( prod(a - bm) ) mod N
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// 2. बीजीय पक्ष का वर्गमूल gamma की गणना (Montgomery&amp;#39;s method आदि)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="c1">// विशाल बीजीय क्षेत्र O_K का तत्व gamma ज्ञात करना, और समरूपता (homomorphism) phi द्वारा वास्तविक दुनिया में मैप करना
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="c1">// Y = phi(gamma) mod N
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">cpp_int&lt;/span> &lt;span class="n">Y&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// आदर्श वर्ग समूह (Ideal Class Group) और इकाई समूह (Unit Group) की बाधाओं (Obstruction) से बचने के लिए,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="c1">// यह मानकर चलते हैं कि Phase 2 और 4 में द्विघाती वर्णों (Quadratic Characters) की पंक्तियाँ जोड़ी गई हैं।
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">cout&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34; -&amp;gt; Homomorphism map phi applied.&amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">endl&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">cout&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34;[Phase 5] Calculating GCD(V - Y, N)...&amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">endl&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">cpp_int&lt;/span> &lt;span class="n">factor&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">gcd&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">V&lt;/span> &lt;span class="o">-&lt;/span> &lt;span class="n">Y&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">N&lt;/span>&lt;span class="p">);&lt;/span> &lt;span class="c1">// GCD(X-Y, N)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">if&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="n">factor&lt;/span> &lt;span class="o">&amp;gt;&lt;/span> &lt;span class="mi">1&lt;/span> &lt;span class="o">&amp;amp;&amp;amp;&lt;/span> &lt;span class="n">factor&lt;/span> &lt;span class="o">&amp;lt;&lt;/span> &lt;span class="n">N&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">cout&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34;&lt;/span>&lt;span class="se">\n&lt;/span>&lt;span class="s">================================================================&amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">endl&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">cout&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34;[SUCCESS] Non-trivial factor found: &amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">factor&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">endl&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">cout&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34; Other factor: &amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">N&lt;/span> &lt;span class="o">/&lt;/span> &lt;span class="n">factor&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">endl&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">cout&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34;================================================================&amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">endl&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span> &lt;span class="k">else&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">cout&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34;[FAILURE] Trivial solution. Trying next dependency...&amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">endl&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">};&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// ============================================================================
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// Main Execution Pipeline
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">// ============================================================================
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="kt">int&lt;/span> &lt;span class="nf">main&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">cout&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34;================================================================&amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">endl&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">cout&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34; [SOTA GNFS] General Number Field Sieve Engine (Boost C++) &amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">endl&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">cout&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34;================================================================&amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">endl&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// RSA-270 आदि, विशाल भाज्य संख्या N जिसका गुणनखंडन करना है
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">cpp_int&lt;/span> &lt;span class="n">N&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;233108530344407544527637656910680524145619812480305449042948611968495918245135782867888369318577116418213919268572658314913060672626911354027609793166341626693946596196427744273886601876896313468704059066746903123910748277606548649151920812699309766587514735456594993207&amp;#34;&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// बहुपद की घात (130 अंकों से अधिक होने पर आमतौर पर 5 या 6 चुनी जाती है)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="kt">int&lt;/span> &lt;span class="n">degree&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">6&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// पाइपलाइन इनिशियलाइज़ेशन
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">PolynomialSelector&lt;/span> &lt;span class="n">poly_select&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">degree&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">LatticeSieve&lt;/span> &lt;span class="n">sieve&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">10000000&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">20000000&lt;/span>&lt;span class="p">);&lt;/span> &lt;span class="c1">// वास्तविक सीमाएँ करोड़ों में होती हैं
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">Filter&lt;/span> &lt;span class="n">filter&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">LinearAlgebraGF2&lt;/span> &lt;span class="n">linalg&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">AlgebraicSquareRoot&lt;/span> &lt;span class="n">sqrt_step&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">auto&lt;/span> &lt;span class="n">start_time&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">chrono&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">high_resolution_clock&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">now&lt;/span>&lt;span class="p">();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// 1. बहुपद चयन
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">poly_select&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">select&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">N&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// 2. चलनी (sieve) प्रसंस्करण
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">sieve&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">generate_factor_bases&lt;/span>&lt;span class="p">();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">vector&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="n">Relation&lt;/span>&lt;span class="o">&amp;gt;&lt;/span> &lt;span class="n">relations&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">sieve&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">sieve&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">poly_select&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// 3. फ़िल्टरिंग (मैट्रिक्स संपीड़न)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">filter&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">reduce_matrix&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">relations&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// 4. रेखीय बीजगणित (GF(2) पर शून्यस्थान खोज)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">vector&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">vector&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="kt">int&lt;/span>&lt;span class="o">&amp;gt;&amp;gt;&lt;/span> &lt;span class="n">dependencies&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">linalg&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">solve_nullspace&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">relations&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// 5. बीजीय वर्गमूल की गणना और GCD
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="k">for&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="k">const&lt;/span> &lt;span class="k">auto&lt;/span>&lt;span class="o">&amp;amp;&lt;/span> &lt;span class="nl">dep&lt;/span> &lt;span class="p">:&lt;/span> &lt;span class="n">dependencies&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">sqrt_step&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">compute_and_factor&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">relations&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">dep&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">N&lt;/span>&lt;span class="p">);&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">auto&lt;/span> &lt;span class="n">end_time&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">chrono&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">high_resolution_clock&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">now&lt;/span>&lt;span class="p">();&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">chrono&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">duration&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="kt">double&lt;/span>&lt;span class="o">&amp;gt;&lt;/span> &lt;span class="n">elapsed&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">end_time&lt;/span> &lt;span class="o">-&lt;/span> &lt;span class="n">start_time&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">cout&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34;&lt;/span>&lt;span class="se">\n&lt;/span>&lt;span class="s">[System] SOTA GNFS Pipeline completed in &amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">elapsed&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">count&lt;/span>&lt;span class="p">()&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="s">&amp;#34; seconds.&amp;#34;&lt;/span> &lt;span class="o">&amp;lt;&amp;lt;&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">endl&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="k">return&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>तो यह कोड क्रिप्टोग्राफी की दीवारों को कैसे तोड़ता है? आइए इन 5 चरणों में से प्रत्येक के पीछे के सटीक एल्गोरिदम और उन्नत गणित को विस्तार से समझें।&lt;/p>
&lt;hr>
&lt;h2 id="2-gnfs-क-अतम-लकषय-x2-equiv-y2-pmod-n">2. GNFS का अंतिम लक्ष्य: $X^2 \equiv Y^2 \pmod N$
&lt;/h2>&lt;p>GNFS ही नहीं, बल्कि लगभग सभी आधुनिक विशाल अभाज्य गुणनखंडन एल्गोरिदम का लक्ष्य एक ऐसा गैर-तुच्छ (non-trivial) युग्म $(X, Y)$ खोजना है जो निम्नलिखित सर्वांगसमता (congruence) को संतुष्ट करता हो:&lt;/p>
$$X^2 \equiv Y^2 \pmod N$$
&lt;p>इस समीकरण का अर्थ है कि &amp;ldquo;$X^2$ और $Y^2$ को $N$ से विभाजित करने पर शेषफल समान होता है&amp;rdquo;। यदि हम इसे रूपांतरित करें, तो:
$X^2 - Y^2 \equiv 0 \pmod N$
अर्थात, $(X-Y)(X+Y)$, $N$ का गुणज है।&lt;/p>
&lt;p>यदि $X \not\equiv \pm Y \pmod N$ (गैर-तुच्छ हल) है, तो $(X-Y)$ और $N$ के बीच &amp;ldquo;1 से बड़ा और $N$ से छोटा एक सार्व भाजक (common divisor)&amp;rdquo; मौजूद होगा।
यहाँ, यदि हम यूक्लिड के एल्गोरिदम का उपयोग करके ** $\gcd(X-Y, N)$ ** की गणना करते हैं, तो $N$ का अभाज्य गुणनखंड आसानी से मिल जाएगा।&lt;/p>
&lt;p>हालाँकि, इस $X$ और $Y$ को खोजना रेगिस्तान में सुई खोजने जैसा है। इसलिए, GNFS &amp;ldquo;वास्तविक पूर्णांकों की दुनिया&amp;rdquo; और &amp;ldquo;बहुपदों की बीजीय दुनिया&amp;rdquo; नामक ** 2 दुनियाएँ ** बनाने और संगणना को वितरित करने का एक प्रतिभाशाली दृष्टिकोण अपनाता है।&lt;/p>
&lt;hr>
&lt;h2 id="3-phase-1-बहपद-चयन-polynomial-selection">3. Phase 1: बहुपद चयन (Polynomial Selection)
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-cpp" data-lang="cpp">&lt;span class="line">&lt;span class="cl">&lt;span class="k">class&lt;/span> &lt;span class="nc">PolynomialSelector&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// ...
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="kt">void&lt;/span> &lt;span class="nf">select&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="k">const&lt;/span> &lt;span class="n">cpp_int&lt;/span>&lt;span class="o">&amp;amp;&lt;/span> &lt;span class="n">N&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// m = N^(1/d) की गणना और base-m विस्तार
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="c1">// ...
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="k">for&lt;/span> &lt;span class="p">(&lt;/span>&lt;span class="kt">int&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">0&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="n">i&lt;/span> &lt;span class="o">&amp;lt;=&lt;/span> &lt;span class="n">degree&lt;/span>&lt;span class="p">;&lt;/span> &lt;span class="o">++&lt;/span>&lt;span class="n">i&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">f&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="n">i&lt;/span>&lt;span class="p">]&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">temp&lt;/span> &lt;span class="o">%&lt;/span> &lt;span class="n">m&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">temp&lt;/span> &lt;span class="o">/=&lt;/span> &lt;span class="n">m&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">g&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">{&lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="n">m&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">};&lt;/span> &lt;span class="c1">// g(x) = x - m
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">};&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>GNFS का पहला कदम दोनों दुनियाओं को जोड़ने के लिए एक &amp;ldquo;जादुई बहुपद&amp;rdquo; बनाना है।
एक विशाल संख्या $N$ के लिए, हम एक पूर्णांक $m$ चुनते हैं। आमतौर पर, हम इसे इस तरह चुनते हैं कि $m \approx N^{1/d}$ हो (कोड में $d=6$ घात के बहुपद की कल्पना की गई है)।&lt;/p>
&lt;p>फिर, हम $N$ का $m$-आधार विस्तार करते हैं, और इसके गुणांकों का उपयोग करके बहुपद $f(x)$ का निर्माण करते हैं।
&lt;/p>
$$N = c_d m^d + c_{d-1} m^{d-1} + \dots + c_1 m + c_0$$
$$f(x) = c_d x^d + c_{d-1} x^{d-1} + \dots + c_1 x + c_0$$
&lt;p>इस बहुपद $f(x)$ में एक अत्यंत महत्वपूर्ण गुण है कि ** &amp;ldquo;चर $x$ में $m$ रखने पर, यह ठीक $N$ बन जाता है ($f(m) = N$)&amp;rdquo; ** । दूसरे शब्दों में, $f(m) \equiv 0 \pmod N$।
परिमेय पक्ष के बहुपद को $g(x) = x - m$ के रूप में परिभाषित किया जाता है।&lt;/p>
&lt;p>इसके कारण, $f(x)=0$ के मूल $\alpha$ द्वारा शासित ** &amp;ldquo;बीजीय क्षेत्र की दुनिया $\mathbb{Z}[\alpha]$&amp;rdquo; ** और सामान्य ** &amp;ldquo;परिमेय (पूर्णांक) संख्याओं की दुनिया $\mathbb{Z}$&amp;rdquo; ** को $x \to m$ नामक &amp;ldquo;रिंग होमोमोर्फिज्म (Ring Homomorphism)&amp;rdquo; द्वारा दृढ़ता से जोड़ा जाता है।&lt;/p>
&lt;p>अत्याधुनिक CADO-NFS आदि में, KleinJung एल्गोरिदम या LLL जालक आधार न्यूनीकरण एल्गोरिदम का उपयोग महीनों तक ऐसे &amp;ldquo;सबसे सुविधाजनक बहुपद $f(x)$&amp;rdquo; की खोज के लिए किया जाता है जिसके गुणांक बहुत बड़े नहीं होते हैं और बाद के चरणों में अभाज्य संख्याएँ उत्पन्न होने की अधिक संभावना होती है (अर्थात स्मूथ होने की संभावना अधिक होती है)।&lt;/p>
&lt;hr>
&lt;h2 id="4-phase-2-वशष-q-जलक-चलन-special-q-lattice-sieving">4. Phase 2: विशेष $q$ जालक चलनी (Special-q Lattice Sieving)
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;span class="lnt">8
&lt;/span>&lt;span class="lnt">9
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-cpp" data-lang="cpp">&lt;span class="line">&lt;span class="cl">&lt;span class="k">class&lt;/span> &lt;span class="nc">LatticeSieve&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// ...
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">vector&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="n">Relation&lt;/span>&lt;span class="o">&amp;gt;&lt;/span> &lt;span class="n">sieve&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="k">const&lt;/span> &lt;span class="n">PolynomialSelector&lt;/span>&lt;span class="o">&amp;amp;&lt;/span> &lt;span class="n">poly&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// ...
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="c1">// (a, b) युग्मों को विशेष अभाज्य q के जालक में मैप करता है,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="c1">// और कैश दक्षता को अधिकतम करने वाली चलनी (sieve) चलाता है।
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="c1">// ...
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">};&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>एक बार जब दोनों दुनियाएँ तैयार हो जाती हैं, तो अगला कदम उन दोनों दुनियाओं में &amp;ldquo;स्मूथ संख्याएँ (केवल छोटी अभाज्य संख्याओं से बनी संख्याएँ)&amp;rdquo; खोजना है।
पूर्णांक युग्मों $(a, b)$ की अनगिनत संख्या उत्पन्न की जाती है, और निम्नलिखित दो मानों की गणना की जाती है:&lt;/p>
&lt;ol>
&lt;li>** परिमेय पक्ष का मान ** : $a - bm$&lt;/li>
&lt;li>** बीजीय पक्ष का नॉर्म ** : $b^d f(a/b)$&lt;/li>
&lt;/ol>
&lt;p>GNFS का लक्ष्य ऐसे ** &amp;ldquo;युग्मों (Relation: संबंध) को करोड़ों की संख्या में इकट्ठा करना है जहाँ परिमेय और बीजीय दोनों मानों को पूरी तरह से केवल छोटे अभाज्य कारकों में विभाजित किया जा सकता है&amp;rdquo; ** ।&lt;/p>
&lt;p>शुरुआती GNFS में, एक &amp;ldquo;सरल रेखा चलनी (Line Sieve)&amp;rdquo; का उपयोग किया जाता था जो $(a, b)$ को $xy$-तल पर रखता था और उन्हें एक सिरे से अभाज्य संख्याओं द्वारा क्रमिक रूप से विभाजित करता था। हालाँकि, इसमें मेमोरी के कई स्थानों तक पहुँचने के कारण लगातार कैश मिस होने और बहुत धीमा होने की कमजोरी थी।&lt;/p>
&lt;p>इसलिए, वर्तमान अत्याधुनिक कोड में ** &amp;ldquo;विशेष $q$ जालक चलनी (Special-q Lattice Sieve)&amp;rdquo; ** नामक तकनीक का उपयोग किया जाता है।
एक उपयुक्त रूप से बड़ी अभाज्य संख्या $q$ तय की जाती है, और केवल उन $(a, b)$ युग्मों की गणना की जाती है जहाँ &amp;ldquo;बीजीय पक्ष का मान निश्चित रूप से $q$ द्वारा विभाज्य है&amp;rdquo;। इस शर्त को पूरा करने वाले $(a, b)$ तल पर एक &amp;ldquo;जालक (Lattice)&amp;rdquo; बनाते हैं, इसलिए गणना करने के लिए पतों की जंप की चौड़ाई स्थिर हो जाती है, जो CPU के L1/L2 कैश में पूरी तरह से फिट बैठती है।
इस जालक चलनी की शुरुआत के साथ, GNFS की गणना गति में नाटकीय रूप से सुधार हुआ।&lt;/p>
&lt;hr>
&lt;h2 id="5-phase-3-फलटरग-filtering">5. Phase 3: फ़िल्टरिंग (Filtering)
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-cpp" data-lang="cpp">&lt;span class="line">&lt;span class="cl">&lt;span class="k">class&lt;/span> &lt;span class="nc">Filter&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">public&lt;/span>&lt;span class="o">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">void&lt;/span> &lt;span class="n">reduce_matrix&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">vector&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="n">Relation&lt;/span>&lt;span class="o">&amp;gt;&amp;amp;&lt;/span> &lt;span class="n">relations&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// 1. Singleton removal (केवल 1 बार आने वाले अभाज्य संख्या वाले रिलेशन को हटाना)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="c1">// 2. Clique merging (विरल मैट्रिक्स को सघन बनाने के लिए रिलेशन को मिलाना)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">};&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Phase 2 में दुनिया भर के कंप्यूटरों द्वारा महीनों तक एकत्र किए गए करोड़ों रिलेशन। हालाँकि, अगर हम इसे ऐसे ही अगले &amp;ldquo;युगपत समीकरणों को हल करने वाले चरण (मैट्रिक्स गणना)&amp;rdquo; में डाल देते हैं, तो सुपरकंप्यूटर की मेमोरी भर जाएगी।&lt;/p>
&lt;p>इसलिए, ** फ़िल्टरिंग (Filtering) ** नामक एक अति-संपीड़न प्रक्रिया की जाती है।&lt;/p>
&lt;ol>
&lt;li>
&lt;p>** Singleton removal (सिंगलटन रिमूवल) **
मान लें कि करोड़ों रिलेशन में कोई विशाल अभाज्य संख्या $p$ &amp;ldquo;केवल 1 बार&amp;rdquo; आती है। हमारा लक्ष्य &amp;ldquo;सभी अभाज्य संख्याओं के घातांकों को सम (2 का गुणज) बनाना&amp;rdquo; है, इसलिए जो अभाज्य संख्या केवल 1 बार आती है उसे कभी सम नहीं किया जा सकता।
इसलिए, उस अभाज्य संख्या वाले रिलेशन को तुरंत &amp;ldquo;कचरा&amp;rdquo; मानकर हटा (पर्ज) दिया जाता है। चूँकि यह एक श्रृंखला प्रतिक्रिया में होता है, करोड़ों पंक्तियों वाला डेटा तेज़ी से कम हो जाता है।&lt;/p>
&lt;/li>
&lt;li>
&lt;p>** Clique merging (क्लीक मर्जिंग) **
इसके अलावा, एक विशिष्ट अभाज्य संख्या साझा करने वाले रिलेशन को एक साथ गुणा करके (जोड़कर), पंक्तियों की संख्या कम हो जाती है, जबकि एक विरल (sparse) मैट्रिक्स को सघन स्थिति में संकुचित किया जाता है (ग्राफ सिद्धांत में क्लीक सर्च के समान एक विधि का उपयोग किया जाता है)।&lt;/p>
&lt;/li>
&lt;/ol>
&lt;p>इस अनुकूलन के साथ, विशाल विरल मैट्रिक्स को गणना योग्य आकार में नाटकीय रूप से संकुचित किया जाता है।&lt;/p>
&lt;hr>
&lt;h2 id="6-phase-4-gf2-पर-रखय-बजगणत-block-wiedemann-वध">6. Phase 4: GF(2) पर रेखीय बीजगणित (Block Wiedemann विधि)
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt">1
&lt;/span>&lt;span class="lnt">2
&lt;/span>&lt;span class="lnt">3
&lt;/span>&lt;span class="lnt">4
&lt;/span>&lt;span class="lnt">5
&lt;/span>&lt;span class="lnt">6
&lt;/span>&lt;span class="lnt">7
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-cpp" data-lang="cpp">&lt;span class="line">&lt;span class="cl">&lt;span class="k">class&lt;/span> &lt;span class="nc">LinearAlgebraGF2&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">public&lt;/span>&lt;span class="o">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">vector&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">vector&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="kt">int&lt;/span>&lt;span class="o">&amp;gt;&amp;gt;&lt;/span> &lt;span class="n">solve_nullspace&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="k">const&lt;/span> &lt;span class="n">std&lt;/span>&lt;span class="o">::&lt;/span>&lt;span class="n">vector&lt;/span>&lt;span class="o">&amp;lt;&lt;/span>&lt;span class="n">Relation&lt;/span>&lt;span class="o">&amp;gt;&amp;amp;&lt;/span> &lt;span class="n">relations&lt;/span>&lt;span class="p">)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// विरल मैट्रिक्स (sparse matrix) और वेक्टर के गुणन की पुनरावृत्ति करके,
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="c1">// M * x = 0 mod 2 को संतुष्ट करने वाले कई हल वेक्टर (कर्नेल) खोजना।
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">};&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>यह पहेली का मूल है।
हम एकत्र किए गए रिलेशन को गुणा करते हैं ताकि ** &amp;ldquo;ऐसे संयोजन को खोज सकें जहाँ सभी अभाज्य कारकों के घातांक सम हो जाते हैं&amp;rdquo; ** ।&lt;/p>
&lt;p>गणितीय रूप से, यह एक विशाल मैट्रिक्स $M$ जिसमें प्रत्येक अभाज्य संख्या के घातांक की &amp;ldquo;सम/विषम (यानी 0 या 1)&amp;rdquo; स्थिति होती है, और यह दर्शाने वाला एक वेक्टर $x$ कि किन रिलेशन का उपयोग किया जाए, का उपयोग करके:
** $M \cdot x \equiv 0 \pmod 2$ **
संतुष्ट करने वाले हल वेक्टर $x$ (शून्यस्थान / कर्नेल) को खोजने के अलावा और कुछ नहीं है।&lt;/p>
&lt;p>हमें लाखों पंक्तियों × लाखों स्तंभों वाले मैट्रिक्स के युगपत समीकरणों को हल करना होगा। सामान्य गाऊसी उन्मूलन (Gaussian elimination) से गणना की जटिलता $O(N^3)$ हो जाएगी, और गणना ब्रह्मांड के अंत तक भी समाप्त नहीं होगी।&lt;/p>
&lt;p>इसलिए, अत्याधुनिक कार्यान्वयन ** &amp;ldquo;Block Wiedemann (ब्लॉक विडमैन) विधि&amp;rdquo; ** को अपनाता है।
यह क्रिलोव सबस्पेस विधि का एक प्रकार है जो इस तथ्य का लाभ उठाता है कि मैट्रिक्स $M$ &amp;ldquo;अत्यंत विरल (लगभग सभी 0)&amp;rdquo; है, और मैट्रिक्स और वेक्टर के गुणन को बार-बार करके हल निकालता है।
पुरानी Block Lanczos विधि के विपरीत, Block Wiedemann विधि गणना प्रक्रिया को पूरी तरह से कई क्लस्टरों में विभाजित कर सकती है, इसलिए यह आधुनिक वितरित क्लाउड कंप्यूटिंग और सुपरकंप्यूटर पर समानांतर गणना में अत्यधिक शक्तिशाली है।&lt;/p>
&lt;hr>
&lt;h2 id="7-phase-5-बजय-वरगमल-algebraic-square-root-और-करपटगरफ-क-पतन">7. Phase 5: बीजीय वर्गमूल (Algebraic Square Root) और क्रिप्टोग्राफी का पतन
&lt;/h2>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-cpp" data-lang="cpp">&lt;span class="line">&lt;span class="cl">&lt;span class="k">class&lt;/span> &lt;span class="nc">AlgebraicSquareRoot&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="k">public&lt;/span>&lt;span class="o">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="kt">void&lt;/span> &lt;span class="n">compute_and_factor&lt;/span>&lt;span class="p">(...)&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// 1. परिमेय पक्ष का वर्गमूल V की गणना
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">cpp_int&lt;/span> &lt;span class="n">V&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// 2. बीजीय पक्ष का वर्गमूल gamma की गणना
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">cpp_int&lt;/span> &lt;span class="n">Y&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="mi">1&lt;/span>&lt;span class="p">;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="c1">// ...
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="n">cpp_int&lt;/span> &lt;span class="n">factor&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="n">gcd&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">V&lt;/span> &lt;span class="o">-&lt;/span> &lt;span class="n">Y&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">N&lt;/span>&lt;span class="p">);&lt;/span> &lt;span class="c1">// GCD(X-Y, N)
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span> &lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">};&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;p>Phase 4 में मैट्रिक्स गणनाओं के माध्यम से, हमने &amp;ldquo;रिलेशन का एक सेट $S$ प्राप्त किया है जो, जब गुणा किया जाता है, तो सभी अभाज्य कारकों की सम घात में परिणत होता है&amp;rdquo;।
यह हमें परिमेय और बीजीय दोनों दुनियाओं में &amp;ldquo;वर्ग (Squares)&amp;rdquo; बनाने की अनुमति देता है।&lt;/p>
&lt;p>चूँकि परिमेय पक्ष केवल पूर्णांक गुणन है, इसलिए वर्गमूल $V$ की गणना करना आसान है।
&lt;/p>
$$V^2 = \prod_{S} (a - bm)$$
&lt;p>** लेकिन असली चुनौती &amp;ldquo;बीजीय पक्ष&amp;rdquo; पर है। **
बीजीय क्षेत्र $\mathbb{Z}[\alpha]$ की दुनिया में, अभाज्य गुणनखंडन की विशिष्टता (unique factorization) लागू नहीं होती है, इसलिए हमने आदर्शों (ideals) का उपयोग करके गणना की है। मैट्रिक्स गणना केवल यह गारंटी देती है कि यह &amp;ldquo;आदर्श का वर्ग&amp;rdquo; है, और ** यह गारंटी नहीं देता है कि यह &amp;ldquo;तत्व का वर्ग ($\gamma^2$)&amp;rdquo; बन जाता है ** ।&lt;/p>
&lt;p>यहाँ बीजीय संख्या सिद्धांत में एक दुर्जेय दीवार है, जिसे &amp;ldquo;आदर्श वर्ग समूह (Ideal Class Group) की बाधा&amp;rdquo; और &amp;ldquo;इकाई समूह (Unit Group) की बाधा&amp;rdquo; कहा जाता है।
GNFS में, इस दीवार को तोड़ने के लिए ** &amp;ldquo;द्विघाती वर्णों (Quadratic Characters)&amp;rdquo; ** नामक जादू का उपयोग किया जाता है।
Phase 4 के मैट्रिक्स में, दर्जनों विशेष अभाज्य आदर्शों के लिए द्विघाती अवशेषों (लेजेंड्रे प्रतीक) की पंक्तियों को चुपके से पहले से जोड़ दिया जाता है। इस वजह से, पाया गया सेट $S$ भारी संभावना के साथ बाधाओं को बायपास करेगा, और सुरक्षित रूप से &amp;ldquo;सच्चे तत्व का वर्ग $\gamma^2$&amp;rdquo; बनाएगा।&lt;/p>
&lt;p>$\gamma$ (बीजीय वर्गमूल) ज्ञात करने का कार्य Montgomery विधि जैसे अत्यंत जटिल एल्गोरिदम का उपयोग करके किया जाता है।&lt;/p>
&lt;p>और अंततः, बीजीय पक्ष के वर्गमूल $\gamma$ को रिंग होमोमोर्फिज्म $\phi$ द्वारा वास्तविक दुनिया में ले जाया जाता है ($x$ के लिए $m$ प्रतिस्थापित करके), जिससे हमें $Y$ मिलता है।
यदि हम परिमेय पक्ष के $V$ को वैसे ही $X$ के रूप में रखते हैं, तो वह पूर्ण समीकरण जो हम खोज रहे थे, अंततः पूरा हो जाता है।&lt;/p>
&lt;p>** &lt;/p>
$$X^2 \equiv Y^2 \pmod N$$
&lt;p> **&lt;/p>
&lt;p>अब बस $\gcd(X-Y, N)$ की गणना करनी है। 0.001 सेकंड का प्रसंस्करण चलता है, और जैसे ही गैर-तुच्छ कारक स्क्रीन पर प्रिंट होते हैं, अभेद्य मानी जाने वाली RSA क्रिप्टोग्राफी पूरी तरह से ढह जाती है।&lt;/p>
&lt;hr>
&lt;h2 id="नषकरष">निष्कर्ष
&lt;/h2>&lt;p>GNFS सिर्फ एक प्रोग्रामिंग तकनीक नहीं है।
यह मानव बुद्धि का क्रिस्टलीकरण है जिसने &amp;ldquo;शुद्ध गणित की गहराइयों&amp;rdquo; जैसे अमूर्त बीजगणित (abstract algebra), रिंग थ्योरी (ring theory), और आदर्श वर्ग समूहों (ideal class groups) को &amp;ldquo;चरम इंजीनियरिंग&amp;rdquo; जैसे सुपरकंप्यूटर वितरित आर्किटेक्चर और कैश अनुकूलन के साथ जीत लिया है।&lt;/p>
&lt;p>हम जिन चैट और क्रेडिट कार्ड की जानकारी को लापरवाही से भेजते हैं, वे ऐसे खगोलीय गणितीय बचावों द्वारा संरक्षित हैं।&lt;/p>
&lt;p>हमें उम्मीद है कि इस C++ फ्रेमवर्क के माध्यम से, आप अत्याधुनिक क्रिप्टोग्राफी क्रैकिंग एल्गोरिदम के पीछे &amp;ldquo;गणित और कंप्यूटर के रोमांस&amp;rdquo; को महसूस करेंगे।&lt;/p></description></item><item><title>सामान्य संख्या क्षेत्र चलनी (GNFS) की सच्ची गणितीय संरचना</title><link>http://kenji.blog/hi/p/%E4%B8%80%E8%88%AC%E6%95%B0%E4%BD%93%E7%AF%A9%E6%B3%95gnfs%E3%81%AE%E7%9C%9F%E3%81%AE%E6%95%B0%E5%AD%A6%E7%9A%84%E6%A7%8B%E9%80%A0/</link><pubDate>Sat, 05 Sep 2026 02:26:13 +0900</pubDate><guid>http://kenji.blog/hi/p/%E4%B8%80%E8%88%AC%E6%95%B0%E4%BD%93%E7%AF%A9%E6%B3%95gnfs%E3%81%AE%E7%9C%9F%E3%81%AE%E6%95%B0%E5%AD%A6%E7%9A%84%E6%A7%8B%E9%80%A0/</guid><description>&lt;img src="http://kenji.blog/p/%E4%B8%80%E8%88%AC%E6%95%B0%E4%BD%93%E7%AF%A9%E6%B3%95gnfs%E3%81%AE%E7%9C%9F%E3%81%AE%E6%95%B0%E5%AD%A6%E7%9A%84%E6%A7%8B%E9%80%A0/rsa_encryption_break_1788542156523.jpg" alt="Featured image of post सामान्य संख्या क्षेत्र चलनी (GNFS) की सच्ची गणितीय संरचना" />&lt;h1 id="समनय-सखय-कषतर-चलन-gnfs-क-सचच-गणतय-सरचन">सामान्य संख्या क्षेत्र चलनी (GNFS) की सच्ची गणितीय संरचना
&lt;/h1>&lt;p>GNFS का अंतिम उद्देश्य $X, Y$ खोजना है ताकि $X^2 \equiv Y^2 \pmod N$ हो सके।
इसे प्राप्त करने के लिए, गणितज्ञों ने &lt;strong>&amp;ldquo;वास्तविक पूर्णांकों की दुनिया&amp;rdquo;&lt;/strong> और &lt;strong>&amp;ldquo;बीजगणितीय क्षेत्रों की दुनिया&amp;rdquo;&lt;/strong> के बीच एक पुल बनाया। वह पुल &amp;ldquo;होमोमोर्फिज़्म (Homomorphism)&amp;rdquo; है।&lt;/p>
&lt;h2 id="चरण-1-दनयओ-क-जडन-वल-हममरफजम">चरण 1: दुनियाओं को जोड़ने वाला &amp;ldquo;होमोमोर्फिज़्म&amp;rdquo;
&lt;/h2>&lt;h3 id="1-बहपद-क-चयन-और-जड-क-परभष">1. बहुपद का चयन और जड़ों की परिभाषा
&lt;/h3>&lt;p>एक विशाल भाज्य संख्या $N$ के लिए, हम एक पूर्णांक $m$ और एक बहुपद $f(x)$ चुनते हैं ताकि $f(m) \equiv 0 \pmod N$ हो।
(उदाहरण: $N$ को $m$ के आधार पर विस्तारित करें और इसके गुणांकों से $f(x)$ बनाएँ। यहाँ हम मान लेते हैं कि $f(x)$ परिमेय संख्याओं के क्षेत्र $\mathbb{Q}$ पर अप्राप्य (irreducible) है (इसे और फ़ैक्टर नहीं किया जा सकता))।&lt;/p>
&lt;p>अगला, हम समीकरण $f(x) = 0$ की &amp;ldquo;जटिल संख्याओं में जड़ों&amp;rdquo; में से एक को $\alpha$ के रूप में परिभाषित करते हैं।
स्वाभाविक रूप से, $f(\alpha) = 0$ है। $\alpha$ एक पूर्णांक नहीं है, बल्कि एक जटिल संख्या है जिसमें वर्गमूल और काल्पनिक संख्याएँ शामिल हैं (एक बीजगणितीय संख्या)।&lt;/p>
&lt;h3 id="2-रग-ring-और-हममरफजम-क-नरमण">2. रिंग (Ring) और होमोमोर्फिज़्म का निर्माण
&lt;/h3>&lt;p>यहाँ, हम दो गणितीय &amp;ldquo;रिंग&amp;rdquo; (वे दुनिया जहाँ जोड़ और गुणा परिभाषित हैं) तैयार करते हैं।&lt;/p>
&lt;ul>
&lt;li>&lt;strong>दुनिया A: $\mathbb{Z}[\alpha]$&lt;/strong> (बीजगणितीय पूर्णांकों की रिंग जिसमें $\alpha$ शामिल है)
यह $a + b\alpha + c\alpha^2 + \dots$ के रूप में व्यक्त संख्याओं की दुनिया है।&lt;/li>
&lt;li>&lt;strong>दुनिया B: $\mathbb{Z}/N\mathbb{Z}$&lt;/strong> ($N$ से भाग देने पर शेषफल की रिंग)
यह केवल $0$ से $N-1$ तक के पूर्णांकों से बनी सर्वांगसमता (modulo) की दुनिया है।&lt;/li>
&lt;/ul>
&lt;p>यहाँ, हम दुनिया A से दुनिया B तक निम्नलिखित मैपिंग $\phi$ को परिभाषित करते हैं।
&lt;strong>$$\phi : \mathbb{Z}[\alpha] \to \mathbb{Z}/N\mathbb{Z}$$&lt;/strong>
&lt;strong>$$\phi(\alpha) = m \pmod N$$&lt;/strong>&lt;/p>
&lt;p>यह मैपिंग $\phi$ एक जादुई ऑपरेशन है जो दुनिया A के चर $\alpha$ को दुनिया B के पूर्णांक $m$ से बदल देता है।
इस $\phi$ में एक अत्यंत शक्तिशाली गुण है जिसे &lt;strong>&amp;ldquo;रिंग होमोमोर्फिज़्म (Ring Homomorphism)&amp;rdquo;&lt;/strong> कहा जाता है।
होमोमोर्फिज़्म का अर्थ है &lt;strong>&amp;ldquo;जोड़ और गुणा की संरचना को नष्ट किए बिना किसी दूसरी दुनिया में टेलीपोर्ट करना&amp;rdquo;&lt;/strong> । दूसरे शब्दों में, निम्नलिखित समीकरण सत्य हैं:&lt;/p>
&lt;ul>
&lt;li>$\phi(X \times Y) = \phi(X) \times \phi(Y)$&lt;/li>
&lt;li>$\phi(X^2) = \phi(X)^2$&lt;/li>
&lt;/ul>
&lt;p>इसका क्या मतलब है? अगर हम &amp;ldquo;दुनिया A ($\alpha$ की दुनिया)&amp;rdquo; में किसी जटिल तत्व $\gamma$ का &lt;strong>&amp;ldquo;वर्ग ($\gamma^2$)&amp;rdquo;&lt;/strong> बना सकते हैं, और इसे $\phi$ का उपयोग करके &amp;ldquo;दुनिया B (शेषफल की दुनिया)&amp;rdquo; में टेलीपोर्ट कर सकते हैं, तो &lt;strong>वर्ग रूप $\phi(\gamma)^2$ पूरी तरह से संरक्षित रहता है&lt;/strong> ।&lt;/p>
&lt;hr>
&lt;h2 id="चरण-2-अभजय-गणनखडन-क-पतन-और-आदरश-ideals-क-जनम">चरण 2: अभाज्य गुणनखंडन का पतन और &amp;ldquo;आदर्शों (Ideals)&amp;rdquo; का जन्म
&lt;/h2>&lt;p>हम दुनिया A ($\mathbb{Z}[\alpha]$) में कई उपयुक्त तत्वों $(a - b\alpha)$ को इकट्ठा करना चाहते हैं, और उन्हें गुणा करके एक &amp;ldquo;पूर्ण वर्ग (वर्ग तत्व)&amp;rdquo; बनाना चाहते हैं।
आम तौर पर, हम प्रत्येक $(a - b\alpha)$ को &amp;ldquo;अभाज्य गुणनखंड (prime factorization)&amp;rdquo; करेंगे और उन्हें इस तरह जोड़ेंगे कि अभाज्य संख्याओं के घातांक सभी सम (even) हों (मैट्रिक्स के साथ हल करके) ताकि एक वर्ग बनाया जा सके।&lt;/p>
&lt;p>&lt;strong>हालाँकि, यहाँ बीजगणित की निराशाजनक दीवार खड़ी है।&lt;/strong>
$\mathbb{Z}[\alpha]$ जैसी बीजगणितीय दुनिया में, मिडिल स्कूल में सिखाई गई &lt;strong>&amp;ldquo;अभाज्य गुणनखंडन की विशिष्टता (किसी भी संख्या को विशिष्ट रूप से अभाज्य संख्याओं के उत्पाद के रूप में व्यक्त किया जा सकता है)&amp;rdquo; ढह जाती है&lt;/strong> ।&lt;/p>
&lt;p>(उदाहरण: एक निश्चित बीजगणितीय क्षेत्र की दुनिया में, $6 = 2 \times 3$ है, और साथ ही $6 = (1+\sqrt{-5}) \times (1-\sqrt{-5})$ है, और हम यह नहीं जानते कि कौन सा असली अभाज्य है)&lt;/p>
&lt;p>यदि अभाज्य गुणनखंडन अद्वितीय नहीं है, तो &amp;ldquo;अभाज्य संख्याओं की गिनती करके उन्हें सम बनाना&amp;rdquo; की पहेली (चलनी विधि) सैद्धांतिक रूप से असंभव है।&lt;/p>
&lt;h3 id="कमर-और-डडकड-क-बचव-आदरश-ideal">कुमेर और डेडेकिंड का बचाव: &amp;ldquo;आदर्श (Ideal)&amp;rdquo;
&lt;/h3>&lt;p>इस पतन से जो बचाया गया, वह 19वीं सदी के गणितज्ञों द्वारा बनाई गई &lt;strong>&amp;ldquo;आदर्श (Ideal: आदर्श संख्या)&amp;rdquo;&lt;/strong> की अवधारणा थी।
तत्व के बजाय, तत्व द्वारा उत्पन्न &amp;ldquo;गुणकों के सेट (आदर्श)&amp;rdquo; पर विचार करके, अभाज्य गुणनखंडन फिर से संभव हो गया।&lt;/p>
&lt;p>एक बीजगणितीय क्षेत्र की पूर्णांक रिंग $\mathcal{O}_K$ ($\mathbb{Z}[\alpha]$ सहित अधिक पूर्ण रिंग) में, यह सिद्ध होता है कि भले ही तत्वों को विशिष्ट रूप से गुणनखंडित नहीं किया जा सकता, &lt;strong>&amp;ldquo;एक आदर्श को हमेशा &amp;lsquo;अभाज्य आदर्शों ($\mathfrak{p}$)&amp;rsquo; के उत्पाद के रूप में विशिष्ट रूप से गुणनखंडित किया जा सकता है&amp;rdquo;&lt;/strong> ।&lt;/p>
&lt;p>इसलिए GNFS में, तत्व $(a - b\alpha)$ को सीधे गुणनखंडित करने के बजाय, हम इसके द्वारा उत्पन्न &lt;strong>प्रमुख आदर्श (principal ideal) $\langle a - b\alpha \rangle$ को अभाज्य आदर्शों में गुणनखंडित करते हैं&lt;/strong> ।&lt;/p>
&lt;hr>
&lt;h2 id="चरण-3-नरम-norm-और-द-चलनय-sieves">चरण 3: नॉर्म (Norm) और दो चलनियां (Sieves)
&lt;/h2>&lt;p>तो, हम कैसे जानेंगे कि आदर्श $\langle a - b\alpha \rangle$ किन अभाज्य आदर्शों में विघटित होगा?
यहाँ हम &lt;strong>&amp;ldquo;नॉर्म (Norm)&amp;rdquo;&lt;/strong> नामक फ़ंक्शन का उपयोग करते हैं। नॉर्म एक ऐसा फ़ंक्शन है जो बीजगणितीय क्षेत्रों के जटिल तत्वों को &amp;ldquo;सामान्य वास्तविक पूर्णांकों $\mathbb{Z}$&amp;rdquo; में परिवर्तित करता है।&lt;/p>
&lt;p>तत्व $(a - b\alpha)$ का नॉर्म एक साधारण बहुपद गणना $b^d f(a/b)$ द्वारा पाया जाता है ($d$, $f(x)$ की डिग्री है)।&lt;/p>
&lt;p>बीजगणितीय प्रमेयों से, हम जानते हैं कि &lt;strong>&amp;ldquo;यदि किसी आदर्श के नॉर्म को छोटी अभाज्य संख्याओं में पूरी तरह से गुणनखंडित किया जा सकता है (चिकना है), तो मूल आदर्श को भी छोटे अभाज्य आदर्शों में पूरी तरह से गुणनखंडित किया जा सकता है&amp;rdquo;&lt;/strong> ।&lt;/p>
&lt;p>इसलिए GNFS पूर्णांक युग्मों $(a, b)$ की एक बड़ी संख्या के लिए निम्नलिखित दो की एक साथ गणना करता है, और केवल उन युग्मों को एकत्र करता है जहाँ दोनों &amp;ldquo;चिकनी संख्या (smooth number)&amp;rdquo; बन जाते हैं:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>परिमेय चलनी (Rational Sieve)&lt;/strong> : $a - bm$ (वास्तविक दुनिया में मान)&lt;/li>
&lt;li>&lt;strong>बीजगणितीय चलनी (Algebraic Sieve)&lt;/strong> : $b^d f(a/b)$ (बीजगणितीय दुनिया में नॉर्म)&lt;/li>
&lt;/ol>
&lt;p>दशकों लाख युग्मों $(a, b)$ को इकट्ठा करने के बाद, हम अभाज्य आदर्श गुणनखंडन डेटा (कितने अभाज्य आदर्श शामिल हैं) को एक विशाल मैट्रिक्स (GF(2) पर रैखिक बीजगणित) के रूप में हल करते हैं ताकि युग्मों का एक सेट $S$ मिल सके जहाँ &amp;ldquo;गुणा करने पर सभी अभाज्य आदर्शों के घातांक सम हो जाते हैं&amp;rdquo;।&lt;/p>
&lt;hr>
&lt;h2 id="चरण-4-द-बधए-और-आदरश-वरग-समह-ideal-class-group">चरण 4: दो &amp;ldquo;बाधाएं&amp;rdquo; और आदर्श वर्ग समूह (Ideal Class Group)
&lt;/h2>&lt;p>मैट्रिक्स गणना से, हमने पाया कि सेट $S$ से संबंधित सभी $(a - b\alpha)$ के आदर्शों को गुणा करने पर एक निश्चित आदर्श $I$ का वर्ग प्राप्त होता है।
&lt;/p>
$$\prod_{S} \langle a - b\alpha \rangle = I^2$$
&lt;p>&lt;strong>हालाँकि, यह अभी खत्म नहीं हुआ है। GNFS में सबसे गहरी और सबसे कठिन गणितीय दीवार यहीं है।&lt;/strong>&lt;/p>
&lt;p>अंत में हम &amp;ldquo;आदर्श का वर्ग&amp;rdquo; नहीं चाहते हैं, बल्कि मैपिंग $\phi$ में बदलने के लिए &lt;strong>&amp;ldquo;तत्व का वर्ग ($\gamma^2$)&amp;rdquo;&lt;/strong> चाहते हैं।
सिर्फ इसलिए कि यह एक आदर्श का वर्ग बन गया, इसका मतलब यह नहीं है कि तत्व भी एक वर्ग है। यहाँ &lt;strong>दो मजबूत गणितीय बाधाएं (Obstructions)&lt;/strong> हैं।&lt;/p>
&lt;h3 id="बध--आदरश-वरग-समह-ideal-class-group-क-दवर">बाधा ①: आदर्श वर्ग समूह (Ideal Class Group) की दीवार
&lt;/h3>&lt;p>आदर्श $I$ हमेशा &amp;ldquo;एक ही तत्व द्वारा उत्पन्न आदर्श (प्रमुख आदर्श)&amp;rdquo; नहीं होता है।
गैर-प्रमुख आदर्शों से किसी विशिष्ट तत्व $\gamma$ को निकालना असंभव है।&lt;/p>
&lt;p>यहाँ &lt;strong>&amp;ldquo;आदर्श वर्ग समूह (Class Group, $Cl_K$)&amp;rdquo;&lt;/strong> की अवधारणा आती है। आदर्श वर्ग समूह एक ऐसा समूह है जो यह मापता है कि &amp;ldquo;उस बीजगणितीय क्षेत्र की दुनिया में कितने आदर्श हैं जो प्रमुख नहीं हैं (अभाज्य गुणनखंडन की विशिष्टता कितनी टूट गई है)&amp;quot;।
भले ही $\prod \langle a - b\alpha \rangle$, $I^2$ बन जाए, यदि $I$ आदर्श वर्ग समूह में पहचान तत्व (प्रमुख आदर्श) नहीं है, तो इसे तत्व के वर्ग में वापस नहीं लाया जा सकता है।&lt;/p>
&lt;h3 id="बध--इकई-समह-unit-group-क-दवर">बाधा ②: इकाई समूह (Unit Group) की दीवार
&lt;/h3>&lt;p>मान लीजिए कि सौभाग्य से $I$ प्रमुख आदर्श $\langle \gamma \rangle$ है।
तब, $\prod \langle a - b\alpha \rangle = \langle \gamma^2 \rangle$ होता है।
आप सोच सकते हैं, &amp;ldquo;बहुत बढ़िया, तत्व भी एक वर्ग है!&amp;rdquo;, लेकिन यह एक बड़ी गलती है।&lt;/p>
&lt;p>आदर्शों (गुणकों के सेट) के समान होने का मतलब यह नहीं है कि तत्व पूरी तरह से समान हैं। हमेशा एक &lt;strong>&amp;ldquo;इकाई (Unit: एक ऐसी संख्या जिसका व्युत्क्रम भी एक पूर्णांक है। जैसे 1 या -1)&amp;rdquo;&lt;/strong> का विचलन होगा।
दूसरे शब्दों में, वास्तविक तत्व समीकरण इस प्रकार बन जाता है:
&lt;/p>
$$\prod_{S} (a - b\alpha) = u \cdot \gamma^2$$
&lt;p>
($u$ इकाई समूह $U_K$ का एक तत्व है)&lt;/p>
&lt;p>जब तक यह इकाई $u$ स्वयं किसी चीज़ का वर्ग नहीं है, तब तक बायाँ पक्ष कभी भी &amp;ldquo;सही तत्व का वर्ग&amp;rdquo; नहीं बन सकता।&lt;/p>
&lt;hr>
&lt;h2 id="चरण-5-एडलमन-क-जद-दवघत-वरण-quadratic-characters">चरण 5: एडलमैन का जादू &amp;ldquo;द्विघात वर्ण (Quadratic Characters)&amp;rdquo;
&lt;/h2>&lt;p>आदर्श वर्ग समूह की बाधा और इकाई समूह की बाधा। इन दोनों को कैसे पार करें?
यहाँ क्रिप्टोग्राफर लियोनार्ड एडलमैन (RSA का &amp;ldquo;A&amp;rdquo;) और अन्य लोगों द्वारा पेश की गई शानदार विधि &lt;strong>&amp;ldquo;द्विघात वर्ण (Quadratic Characters)&amp;rdquo;&lt;/strong> आती है।&lt;/p>
&lt;p>यह निर्धारित करने के लिए कि &amp;ldquo;क्या बीजगणितीय क्षेत्र में कोई निश्चित तत्व पूर्ण वर्ग है?&amp;rdquo;, हम लीजेंड्रे प्रतीक (द्विघात अवशेष) के बीजगणितीय क्षेत्र संस्करण का उपयोग करते हैं।
उस विशाल मैट्रिक्स (अभाज्य आदर्शों की संख्या को सम बनाने के लिए पहेली) में, हम चुपके से दर्जनों अतिरिक्त शर्तें (कॉलम) जोड़ते हैं, जिसमें कहा गया है कि &lt;strong>&amp;ldquo;कुछ विशेष अभाज्य आदर्शों $\mathfrak{q}$ के लिए द्विघात वर्ण भी सभी $1$ (सम) होने चाहिए&amp;rdquo;&lt;/strong> ।&lt;/p>
&lt;p>जब हम मैट्रिक्स गणना द्वारा इन अतिरिक्त शर्तों को भी पूरा करने वाला एक सेट $S$ खोजते हैं, तो बीजगणितीय संख्या सिद्धांत के गहरे प्रमेयों द्वारा यह गारंटी दी जाती है कि &lt;strong>&amp;ldquo;आदर्श वर्ग समूह की बाधा और इकाई समूह की बाधा दोनों ही भारी संभावना के साथ स्वाभाविक रूप से गायब हो जाएंगे&amp;rdquo;&lt;/strong> ।&lt;/p>
&lt;p>इसके साथ, अंततः हमें सच्चा समीकरण मिल जाता है:
&lt;/p>
$$\prod_{S} (a - b\alpha) = \gamma^2$$
&lt;hr>
&lt;h2 id="अतम-चरण-दनयओ-क-वलय-और-करपटगरफक-पतन">अंतिम चरण: दुनियाओं का विलय और क्रिप्टोग्राफ़िक पतन
&lt;/h2>&lt;p>अंत में, पहेली के सभी टुकड़े अपनी जगह पर हैं।&lt;/p>
&lt;p>&lt;strong>[बीजगणितीय क्षेत्रों की दुनिया में तत्व (दुनिया A)]&lt;/strong>
$\gamma^2 = \prod (a - b\alpha)$
(हम $\gamma$ खोजने के लिए वर्गमूल एल्गोरिदम का उपयोग करते हैं)&lt;/p>
&lt;p>&lt;strong>[वास्तविक दुनिया में तत्व (परिमेय संख्याओं की दुनिया)]&lt;/strong>
$V^2 = \prod (a - bm)$
(चूंकि यह साधारण पूर्णांक गुणन है, हम आसानी से वर्गमूल $V$ पा सकते हैं)&lt;/p>
&lt;p>अब, उस जादुई पुल का समय आ गया है जिसे हमने शुरुआत में बनाया था, &lt;strong>होमोमोर्फिज़्म $\phi$&lt;/strong> ।
हम $\phi$ ($\alpha$ को $m$ से बदलने वाला मैपिंग) का उपयोग करके दुनिया A के तत्व $\gamma$ को दुनिया B ($N$ के शेषफल की दुनिया) में टेलीपोर्ट करते हैं।
&lt;/p>
$$Y = \phi(\gamma) \pmod N$$
&lt;p>दूसरी ओर, हम वास्तविक दुनिया में बनाए गए $V$ को सीधे शेषफल की दुनिया में लाते हैं और इसे $X$ कहते हैं।
&lt;/p>
$$X = V \pmod N$$
&lt;p>होमोमोर्फिज़्म की &amp;ldquo;संरचना संरक्षण&amp;rdquo; संपत्ति के कारण, दुनिया A में वर्ग संबंध दुनिया B (मोडुलो $N$ की दुनिया) में पूरी तरह से संरक्षित है।
इसके अलावा, चूंकि मूल युग्म $(a, b)$, $a - b\alpha$ और $a - bm$ के रूप में बनाए गए थे, ये $X$ और $Y$ मोडुलो $N$ की दुनिया में टकराते हैं और निम्नलिखित पूर्ण समीकरण उत्पन्न करते हैं:&lt;/p>
&lt;p>&lt;strong>$$X^2 \equiv Y^2 \pmod N$$&lt;/strong>&lt;/p>
&lt;p>अब हमें बस यह प्रार्थना करनी है कि ये $X$ और $Y$ तुच्छ समाधान ($X \equiv \pm Y$) न हों, और
&lt;strong>$\gcd(X - Y, N)$&lt;/strong> की गणना करें।&lt;/p>
&lt;p>यदि यह एक गैर-तुच्छ समाधान है, तो यूक्लिड का एल्गोरिदम 0.001 सेकंड में चलेगा, और RSA क्रिप्टोग्राफी का दिल कहे जाने वाले गुप्त अभाज्य $p$ और $q$ आउटपुट स्क्रीन पर छप जाएंगे।&lt;/p>
&lt;hr>
&lt;p>यह आधुनिक गणित के सार का संग्रह, &lt;strong>&amp;ldquo;सामान्य संख्या क्षेत्र चलनी (GNFS)&amp;rdquo;&lt;/strong> की पूरी तस्वीर है।&lt;/p></description></item><item><title>इंटरनेट एन्क्रिप्शन को तोड़ने वाला मानवता का सबसे शक्तिशाली गणित "General Number Field Sieve (GNFS)" क्या है?</title><link>http://kenji.blog/hi/p/%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%8D%E3%83%83%E3%83%88%E3%81%AE%E6%9A%97%E5%8F%B7%E3%82%92%E7%A0%B4%E3%82%8B%E4%BA%BA%E9%A1%9E%E6%9C%80%E5%BC%B7%E3%81%AE%E6%95%B0%E5%AD%A6%E4%B8%80%E8%88%AC%E6%95%B0%E4%BD%93%E7%AF%A9%E6%B3%95gnfs%E3%81%A8%E3%81%AF/</link><pubDate>Sat, 05 Sep 2026 02:09:08 +0900</pubDate><guid>http://kenji.blog/hi/p/%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%8D%E3%83%83%E3%83%88%E3%81%AE%E6%9A%97%E5%8F%B7%E3%82%92%E7%A0%B4%E3%82%8B%E4%BA%BA%E9%A1%9E%E6%9C%80%E5%BC%B7%E3%81%AE%E6%95%B0%E5%AD%A6%E4%B8%80%E8%88%AC%E6%95%B0%E4%BD%93%E7%AF%A9%E6%B3%95gnfs%E3%81%A8%E3%81%AF/</guid><description>&lt;img src="http://kenji.blog/p/%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%8D%E3%83%83%E3%83%88%E3%81%AE%E6%9A%97%E5%8F%B7%E3%82%92%E7%A0%B4%E3%82%8B%E4%BA%BA%E9%A1%9E%E6%9C%80%E5%BC%B7%E3%81%AE%E6%95%B0%E5%AD%A6%E4%B8%80%E8%88%AC%E6%95%B0%E4%BD%93%E7%AF%A9%E6%B3%95gnfs%E3%81%A8%E3%81%AF/gnfs_two_worlds_1788542142485.jpg" alt="Featured image of post इंटरनेट एन्क्रिप्शन को तोड़ने वाला मानवता का सबसे शक्तिशाली गणित "General Number Field Sieve (GNFS)" क्या है?" />&lt;h1 id="इटरनट-एनकरपशन-क-तडन-वल-मनवत-क-सबस-शकतशल-गणत-general-number-field-sieve-gnfs-कय-ह">इंटरनेट एन्क्रिप्शन को तोड़ने वाला मानवता का सबसे शक्तिशाली गणित &amp;ldquo;General Number Field Sieve (GNFS)&amp;rdquo; क्या है?
&lt;/h1>&lt;p>जिस इंटरनेट का हम हर दिन उपयोग करते हैं। LINE संदेश, YouTube, Amazon पर खरीदारी आदि, सभी संचार &amp;ldquo;एन्क्रिप्शन&amp;rdquo; द्वारा सुरक्षित हैं।
वर्तमान में, दुनिया में सबसे अधिक उपयोग किया जाने वाला एन्क्रिप्शन &amp;ldquo;RSA एन्क्रिप्शन&amp;rdquo; है।&lt;/p>
&lt;p>RSA एन्क्रिप्शन की रक्षा की कुंजी बहुत सरल है। यह इस गणितीय गुण का उपयोग करता है कि ** &amp;ldquo;विशाल संख्याओं का अभाज्य गुणनखंडन कंप्यूटर द्वारा भी हल नहीं किया जा सकता है&amp;rdquo; ** ।
उदाहरण के लिए, &amp;ldquo;15&amp;rdquo; के लिए हम तुरंत जान जाते हैं कि यह &amp;ldquo;3 × 5&amp;rdquo; है, लेकिन जैसे ही यह &amp;ldquo;270 अंकों की संख्या&amp;rdquo; बन जाता है, भले ही हम दुनिया के सभी सुपर कंप्यूटरों को मिला दें, इसे हल करने में करोड़ों साल लगेंगे।&lt;/p>
&lt;p>हालाँकि, गणितज्ञ भी चुप नहीं रहे। इस अभेद्य एन्क्रिप्शन को तोड़ने के लिए, मानवता ने एक लगभग जादुई एल्गोरिदम (गणना प्रक्रिया) बनाया है जिसे ** &amp;ldquo;General Number Field Sieve (GNFS)&amp;rdquo; ** कहा जाता है।&lt;/p>
&lt;p>इस लेख में, किसी भी तकनीकी शब्द का उपयोग किए बिना, केवल ** मिडिल स्कूल के गणित (अभाज्य गुणनखंडन, बीजगणितीय व्यंजक, महत्तम समापवर्तक) ** के ज्ञान के साथ, हम चरण-दर-चरण समझाएंगे कि &amp;ldquo;मानवता का यह सबसे शक्तिशाली एल्गोरिदम&amp;rdquo; एन्क्रिप्शन को कैसे तोड़ता है!&lt;/p>
&lt;hr>
&lt;h2 id="अधयय-1-डकडग-क-लकषय-एक-8व-ककष-क-सतर-ह">अध्याय 1: डिकोडिंग का लक्ष्य एक &amp;ldquo;8वीं कक्षा का सूत्र&amp;rdquo; है
&lt;/h2>&lt;p>विशाल अभाज्य गुणनखंडन का सामना करने के लिए सबसे बड़ी विशेष चाल। यह 8वीं कक्षा में सीखा गया सूत्र है:&lt;/p>
&lt;blockquote>
&lt;p>** $X^2 - Y^2 = (X + Y)(X - Y)$ **&lt;/p>
&lt;/blockquote>
&lt;p>आप सोच सकते हैं: &amp;ldquo;सच में, क्या ऐसा बुनियादी सूत्र एन्क्रिप्शन को तोड़ सकता है?&amp;quot;। हालाँकि, यह वह मास्टर की है जो सब कुछ खोल देती है।&lt;/p>
&lt;p>एन्क्रिप्शन को तोड़ने का सबसे बड़ा लक्ष्य, एक विशाल संख्या $N$ के लिए, ** &amp;ldquo;ऐसे संख्याएँ ($X$ और $Y$) खोजना है जहाँ $X^2$ और $Y^2$ को $N$ से विभाजित करने पर शेषफल समान हो&amp;rdquo; ** ।&lt;/p>
&lt;h3 id="समन-शषफल-एनकरपशन-क-कय-तडत-ह">&amp;ldquo;समान शेषफल&amp;rdquo; एन्क्रिप्शन को क्यों तोड़ता है?
&lt;/h3>&lt;p>मान लीजिए कि दो संख्याओं, $X^2$ और $Y^2$, का &amp;ldquo;$N$ से विभाजित करने पर समान शेषफल&amp;rdquo; है।
समान शेषफल होने का मतलब है कि एक नियम है जहाँ ** घटाव &amp;ldquo;$X^2 - Y^2$&amp;rdquo; हमेशा $N$ से पूरी तरह से विभाज्य होगा ($N$ का गुणज होगा) ** ।&lt;/p>
&lt;p>यहाँ, मान लें कि एन्क्रिप्शन में प्रयुक्त विशाल संख्या $N$ दो गुप्त अभाज्य संख्याओं ($p$ और $q$) के गुणन से बनी है ($N = p \times q$)।&lt;/p>
&lt;p>$X^2 - Y^2$ का गुणनखंडन करने पर, हमें ** $(X - Y)(X + Y)$ ** मिलता है।
इसका $N$ का गुणज होने का अर्थ है कि इस गुणन में कहीं न कहीं गुप्त अभाज्य संख्याएँ $p$ और $q$ छिपी हैं।&lt;/p>
&lt;p>यहाँ, एक चमत्कार होता है।
गणितीय रूप से ** 50% (आधा) ** संभावना है कि दो अभाज्य संख्याएँ $p$ और $q$ अलग-अलग कमरों में चली जाएँगी: ** &amp;ldquo;$p$ $(X - Y)$ के कमरे में जाता है&amp;rdquo; और &amp;ldquo;$q$ $(X + Y)$ के कमरे में जाता है&amp;rdquo; ** ।&lt;/p>
&lt;p>केवल अभाज्य संख्या $p$ के $(X - Y)$ कक्ष में प्रवेश करने के साथ, आइए $(X - Y)$ और $N$ के ** &amp;ldquo;महत्तम समापवर्तक (सबसे बड़ा उभयनिष्ठ भाग)&amp;rdquo; ** की गणना करें।&lt;/p>
&lt;ul>
&lt;li>$(X - Y)$ की सामग्री = $p \times$ कोई संख्या&lt;/li>
&lt;li>$N$ की सामग्री = $p \times q$
एकमात्र सामान्य भाग ** &amp;ldquo;$p$&amp;rdquo; ** है!&lt;/li>
&lt;/ul>
&lt;p>दूसरे शब्दों में, जैसे ही महत्तम समापवर्तक की गणना की जाती है, छिपी हुई अभाज्य संख्या $p$ लीक हो जाती है और एन्क्रिप्शन पूरी तरह से डिकोड हो जाता है। (*&amp;ldquo;यूक्लिडियन एल्गोरिदम&amp;rdquo; का उपयोग करके स्मार्टफोन पर भी महत्तम समापवर्तक की तुरंत गणना की जा सकती है)।&lt;/p>
&lt;p>** 【छोटा कॉलम: वर्ग क्यों? घन या दोगुना काम क्यों नहीं करता?】 **&lt;/p>
&lt;blockquote>
&lt;p>&amp;ldquo;$2X - 2Y$&amp;rdquo; के साथ, यह $2(X - Y)$ हो जाता है और केवल एक कमरा होता है, इसलिए आप अभाज्यों को अलग नहीं कर सकते। &amp;ldquo;$X^3 - Y^3$&amp;rdquo; के साथ, कमरे का आकार असंतुलित हो जाता है और गणना अनावश्यक रूप से भारी हो जाती है। अभाज्यों को दो में अलग करने के लिए, &amp;ldquo;वर्ग&amp;rdquo; जो पूरी तरह से दो कमरों में विभाजित होता है, सबसे अधिक लागत प्रभावी है।&lt;/p>
&lt;/blockquote>
&lt;hr>
&lt;h2 id="अधयय-2-x-और-y-कस-खज-अभजय-सखय-करड-सगरह-पहल">अध्याय 2: X और Y कैसे खोजें? &amp;ldquo;अभाज्य संख्या कार्ड संग्रह पहेली&amp;rdquo;
&lt;/h2>&lt;p>लक्ष्य समझ में आ गया है। हालाँकि, भले ही हम आँख बंद करके &amp;ldquo;$X^2$ और $Y^2$ जिनके समान शेषफल हैं&amp;rdquo; की खोज करें, ब्रह्मांड का अंत उन्हें खोजने से पहले आ जाएगा।
इसलिए, गणितज्ञ एक शानदार विचार लेकर आए जिसे ** &amp;ldquo;अभाज्य संख्या कार्ड संग्रह पहेली&amp;rdquo; ** कहा जाता है।&lt;/p>
&lt;h3 id="चरण-1-छलन-स-कवल-सन-क-धल-smooth-numbers-एकतर-कर">चरण 1: छलनी से केवल सोने की धूल (smooth numbers) एकत्र करें
&lt;/h3>&lt;p>सबसे पहले, एक उपयुक्त संख्या $Z$ तैयार करें, इसे वर्ग करें और इसे $N$ से विभाजित करके शेषफल $W$ की गणना करें।
($Z^2 = W$ की शेषफल दुनिया)&lt;/p>
&lt;p>प्राप्त शेषफल $W$ का अभाज्य गुणनखंडन करें। यहाँ, केवल जब ** &amp;ldquo;2, 3, 5, 7, आदि जैसे छोटे अभाज्यों से बना $W$&amp;rdquo; ** दिखाई देता है, तो उस समीकरण को &amp;ldquo;विजेता कार्ड&amp;rdquo; के रूप में रखें, और यदि बड़े अभाज्य मिश्रित हों तो इसे फेंक दें।
यह नदी में छलनी से बड़े पत्थरों को फेंकने और केवल सोने की धूल इकट्ठा करने जैसा है।&lt;/p>
&lt;h3 id="चरण-2-सबक-सम-बनन-क-पहल">चरण 2: सबको &amp;ldquo;सम&amp;rdquo; बनाने की पहेली
&lt;/h3>&lt;p>उदाहरण के लिए, मान लीजिए कि निम्नलिखित 3 सोने की धूल वाले कार्ड एकत्र किए गए हैं।&lt;/p>
&lt;ul>
&lt;li>कार्ड A: $Z_1^2 = 2^3 \times 3^1$&lt;/li>
&lt;li>कार्ड B: $Z_2^2 = 2^1 \times 5^1$&lt;/li>
&lt;li>कार्ड C: $Z_3^2 = 3^1 \times 5^1$&lt;/li>
&lt;/ul>
&lt;p>आइए उन सभी को गुणा करें।
दाईं ओर $(2^3 \times 3^1) \times (2^1 \times 5^1) \times (3^1 \times 5^1)$ हो जाता है,
और सब कुछ एक साथ व्यवस्थित करने पर, यह ** &amp;ldquo;$2^4 \times 3^2 \times 5^2$&amp;rdquo; ** बन जाता है।&lt;/p>
&lt;p>आश्चर्य की बात है, अभाज्य संख्याओं की संख्या &amp;ldquo;4, 2, 2&amp;rdquo; हो गई, ** सभी सम संख्याएँ हैं ** !
सभी सम होने का अर्थ है कि यदि आप कुल राशि को आधा कर देते हैं, तो यह &amp;ldquo;किसी चीज़ का वर्ग&amp;rdquo; होगा।
दूसरे शब्दों में, $(2^2 \times 3^1 \times 5^1)^2 = (60)^2$।&lt;/p>
&lt;p>बाईं ओर $(Z_1 \times Z_2 \times Z_3)^2$ है, तो अंततः,
** $X = (Z_1 \times Z_2 \times Z_3)$ **
** $Y = 60$ **
&amp;ldquo;$X^2 = Y^2$&amp;rdquo; की बहुप्रतीक्षित जोड़ी पूरी हो गई है!&lt;/p>
&lt;p>कंप्यूटर के लिए, यह गणना करने की पहेली कि अभाज्य संख्याओं की संख्या &amp;ldquo;सम है या विषम (0 या 1)&amp;rdquo; कुछ ऐसा है जिसमें वे बहुत अच्छे हैं, इसलिए इस पद्धति के साथ $X$ और $Y$ उच्च गति पर पाए जा सकते हैं।&lt;/p>
&lt;hr>
&lt;h2 id="अधयय-3-नरश-क-दवर">अध्याय 3: निराशा की दीवार
&lt;/h2>&lt;p>अब किसी भी एन्क्रिप्शन को तोड़ा जा सकता है! &amp;hellip;या हमने ऐसा सोचा, लेकिन एक बड़ी समस्या उत्पन्न होती है।
यदि एन्क्रिप्शन संख्या $N$ &amp;ldquo;100 अंक&amp;rdquo; तक है, तो यह विधि (जिसे Quadratic Sieve कहा जाता है) इसे हल कर सकती है, लेकिन जब $N$ &amp;ldquo;200 या 300 अंक&amp;rdquo; बन जाता है, तो गणना के मध्य में आने वाला $W$ बहुत बड़ा हो जाता है।&lt;/p>
&lt;p>जब संख्याएँ बहुत बड़ी हो जाती हैं, तो &amp;ldquo;केवल छोटी अभाज्य संख्याओं (सोने की धूल) से बनी संख्याएँ&amp;rdquo; आना बंद हो जाती हैं। रेगिस्तान में कॉन्टैक्ट लेंस खोजना अधिक कठिन हो जाता है, और पहेली को सुलझाने के लिए आवश्यक कार्ड बिल्कुल भी एकत्र नहीं होंगे।&lt;/p>
&lt;p>यहाँ, अंततः, मानवता का अंतिम हथियार, ** &amp;ldquo;General Number Field Sieve (GNFS)&amp;rdquo; ** प्रकट होता है।&lt;/p>
&lt;hr>
&lt;h2 id="अधयय-4-मनवत-क-द-दनय-बनन-क-सबस-शकतशल-वचर">अध्याय 4: मानवता का &amp;ldquo;दो दुनिया&amp;rdquo; बनाने का सबसे शक्तिशाली विचार
&lt;/h2>&lt;p>GNFS का शानदार विचार है: ** &amp;ldquo;संख्याएँ विशाल हो जाती हैं क्योंकि हम केवल वास्तविक दुनिया में गणना करते हैं। तो, चलिए गणना के भार को दो भागों में विभाजित करने के लिए बहुपदों (अक्षर सूत्रों) का उपयोग करके एक &amp;lsquo;पर्दे के पीछे की दुनिया&amp;rsquo; बनाते हैं।&amp;rdquo; **&lt;/p>
&lt;h3 id="अकषर-सतर-क-जद">अक्षर सूत्रों का जादू
&lt;/h3>&lt;p>GNFS आधार संख्या $m$ का उपयोग करके विशाल संख्या $N$ को अक्षर व्यंजक में परिवर्तित करता है।
उदाहरण के लिए यदि $N=100$, $m=4$ के साथ, तो यह $100 = 4^3 + 2(4^2) + 4$ है।
अक्षर $x$ का उपयोग करके इसे सूत्र (पर्दे के पीछे की दुनिया) में बदलते हैं: ** $f(x) = x^3 + 2x^2 + x$ ** ।&lt;/p>
&lt;p>इस सूत्र की दिलचस्प बात यह है कि इसमें यह गुण है: ** &amp;ldquo;यदि आप $x$ के स्थान पर $m$ (उपरोक्त उदाहरण में 4) रखते हैं, तो आप हमेशा वास्तविक संख्या $N$ पर वापस लौट सकते हैं&amp;rdquo; ** ।&lt;/p>
&lt;h3 id="एक-सथ-2-दनयओ-म-सन-क-धल-क-तलश">एक साथ 2 दुनियाओं में सोने की धूल की तलाश
&lt;/h3>&lt;p>GNFS यादृच्छिक पूर्णांक जोड़े $(a, b)$ बनाता है और एक साथ निम्नलिखित दो गणनाएं करता है:&lt;/p>
&lt;ol>
&lt;li>** वास्तविक दुनिया ** : $a - b \times m$&lt;/li>
&lt;li>** अक्षरों की दुनिया ** : बहुपद नियमों द्वारा गणना की गई $a - b \times x$ का मूल्य&lt;/li>
&lt;/ol>
&lt;p>समस्या को दो दुनियाओं में विभाजित करके, संभाली गई संख्याओं का आकार काफी कम (हल्का) हो जाता है। यह एक विशाल चट्टान को आसान से संभालने वाले पत्थरों में विभाजित करने जैसा है।&lt;/p>
&lt;p>फिर, आप केवल उन चमत्कारी जोड़ियों $(a, b)$ को अलग करने और इकट्ठा करने के लिए छलनी का उपयोग करते हैं जहाँ ** &amp;ldquo;वास्तविक दुनिया और अक्षरों की दुनिया दोनों में, वे &amp;lsquo;केवल छोटी अभाज्य संख्याओं (सोने की धूल) से बने&amp;rsquo; हैं&amp;rdquo; ** । यही &amp;ldquo;Number Field Sieve&amp;rdquo; नाम का मूल है।&lt;/p>
&lt;h3 id="वह-कषण-जब-एनकरपशन-अतत-टट-जत-ह">वह क्षण जब एन्क्रिप्शन अंततः टूट जाता है
&lt;/h3>&lt;p>एक बार दोनों दुनियाओं से करोड़ों &amp;ldquo;गोल्ड डस्ट कार्ड&amp;rdquo; एकत्र हो जाने के बाद, सुपरकंप्यूटर &amp;ldquo;वह संयोजन खोजने के लिए जहां अभाज्य संख्याओं की संख्या सभी सम हों&amp;rdquo; के लिए विशाल मैट्रिक्स गणना का उपयोग करते हैं, ठीक वैसे ही जैसे हमने अध्याय 2 में किया था।&lt;/p>
&lt;p>एक बार संयोजन मिल जाने के बाद:&lt;/p>
&lt;ul>
&lt;li>वास्तविक दुनिया में वर्ग संख्या को ** $X^2$ ** होने दें&lt;/li>
&lt;li>अक्षरों की दुनिया में बनाए गए वर्ग सूत्र को ** $Y(x)^2$ ** होने दें&lt;/li>
&lt;/ul>
&lt;p>अंततः, अक्षर सूत्र $Y(x)$ में $x$ के स्थान पर $m$ को रखें, वास्तविक दुनिया में वापस कूदें और उनसे जुड़ें।
फिर, गणितीय जादू की तरह, वह स्थिति जहाँ ** &amp;ldquo;$X^2$ और $Y^2$ का शेषफल समान है&amp;rdquo; ** पूरी तरह से सिद्ध हो जाती है!&lt;/p>
&lt;p>बाकी, अध्याय 1 की तरह, केवल $X - Y$ और $N$ के महत्तम समापवर्तक की गणना करना है, और अभेद्य RSA एन्क्रिप्शन ढह जाएगा, जिससे गुप्त अभाज्य संख्याएँ सामने आ जाएंगी।&lt;/p>
&lt;hr>
&lt;h2 id="नषकरष-गणत-कभ-समपत-नह-हत">निष्कर्ष: गणित कभी समाप्त नहीं होता
&lt;/h2>&lt;p>आप सोच रहे होंगे: &amp;ldquo;बढ़िया, GNFS के साथ किसी भी एन्क्रिप्शन को तोड़ा जा सकता है!&amp;quot;।
हालाँकि, RSA एन्क्रिप्शन ने भी हार नहीं मानी है। आज इंटरनेट पर जो उपयोग किया जाता है वह एक राक्षसी विशाल संख्या है जिसे &amp;ldquo;RSA-2048 (लगभग 617 अंक)&amp;rdquo; कहा जाता है।&lt;/p>
&lt;p>GNFS मानवता का सबसे शक्तिशाली एल्गोरिदम है, लेकिन 270 अंकों (RSA-270) को हल करने के लिए भी कहा जाता है कि दुनिया भर के कंप्यूटरों को जोड़ने पर भी हजारों या दसियों हजार साल लगेंगे। अभी के लिए, हमारे LINE और बैंक डेटा सुरक्षित हैं।&lt;/p>
&lt;p>लेकिन क्या होगा यदि ** &amp;ldquo;किसी भी विशाल संख्या के लिए $X$ और $Y$ को तुरंत खोजने का जादू&amp;rdquo; ** प्रकट हो जाए?
वास्तव में, इसके सबसे करीब ** &amp;ldquo;क्वांटम कंप्यूटर (Shor का एल्गोरिदम)&amp;rdquo; ** है जो वर्तमान में विकास में है। क्वांटम यांत्रिकी की तरंग प्रकृति का उपयोग करते हुए, यह गणितीय रूप से सिद्ध हो गया है कि थकाऊ कार्ड संग्रह पहेली को दरकिनार करना और एक ही बार में उत्तर तक पहुंचना संभव है।&lt;/p>
&lt;p>एन्क्रिप्शन बनाने वालों (रक्षा) और इसे तोड़ने के लिए एल्गोरिदम बनाने वालों (हमला) के बीच बुद्धि की एक अंतहीन लड़ाई।
यह जानकर कि मिडिल स्कूल में सीखा गया &amp;ldquo;अभाज्य गुणनखंडन&amp;rdquo; और &amp;ldquo;अक्षर व्यंजक&amp;rdquo; वास्तव में वे हथियार हैं जो वैश्विक सुरक्षा की अग्रिम पंक्ति में लड़ रहे हैं, क्या गणित की कक्षाएं थोड़ी अधिक दिलचस्प नहीं लगती हैं?&lt;/p>
&lt;p>जो भविष्य के सबसे मजबूत एल्गोरिदम की खोज करेगा, वह आप ही हो सकते हैं जो इस लेख को पढ़ रहे हैं!&lt;/p>
&lt;hr>
&lt;p>&lt;em>(※यह लेख छात्रों के लिए कोड-ब्रेकिंग के गणितीय आकर्षण का एक वैचारिक रूपांतरण है। वास्तविक GNFS की गणना उच्च विश्वविद्यालय गणित, जैसे बीजीय संख्या क्षेत्रों के आदर्श वर्ग समूहों और समरूपता का उपयोग करके सख्ती से की जाती है)&lt;/em>&lt;/p></description></item><item><title>केरहॉफ्स का सिद्धांत</title><link>http://kenji.blog/hi/p/kerckhoffs-principle/</link><pubDate>Wed, 16 Apr 2025 23:53:08 +0900</pubDate><guid>http://kenji.blog/hi/p/kerckhoffs-principle/</guid><description>&lt;img src="http://kenji.blog/p/%E3%82%B1%E3%83%AB%E3%82%AF%E3%83%9B%E3%83%95%E3%82%B9%E3%81%AE%E5%8E%9F%E7%90%86/img_2.png" alt="Featured image of post केरहॉफ्स का सिद्धांत" />&lt;h1 id="करहफस-क-सदधत">&amp;ldquo;केरहॉफ्स का सिद्धांत&amp;rdquo;
&lt;/h1>&lt;hr>
&lt;p>नमस्ते!&lt;/p>
&lt;p>आज मैं एक बहुत ही रोचक और वास्तव में बेहद महत्वपूर्ण विषय पर बात करना चाहता हूँ जिसे &amp;ldquo;केरहॉफ्स का सिद्धांत&amp;rdquo; कहा जाता है।&lt;/p>
&lt;p>अरे, रुकिए, रुकिए।&lt;br>
कुछ लोग सोच सकते हैं: &amp;ldquo;मैंने &amp;lsquo;केरहॉफ्स का सिद्धांत&amp;rsquo; कभी नहीं सुना, और यह थोड़ा तकनीकी लगता है&amp;hellip;&amp;rdquo; कृपया चिंता न करें। यह लेख बिल्कुल उन लोगों के लिए है जो ऐसा सोचते हैं।&lt;/p>
&lt;hr>
&lt;h2 id="सरकषत-करपटगरफ-क-कय-अरथ-ह">&amp;ldquo;सुरक्षित क्रिप्टोग्राफी&amp;rdquo; का क्या अर्थ है?
&lt;/h2>&lt;p>उदाहरण के लिए, मान लीजिए कोई कहता है: &amp;ldquo;यह तिजोरी केवल वही व्यक्ति खोल सकता है जो इसे खोलने का गुप्त तरीका जानता है।&amp;rdquo;&lt;/p>
&lt;p>पहली नज़र में, यह बहुत सुरक्षित लगता है, है ना?&lt;br>
लेकिन, यदि आप इसके बारे में सोचते हैं, तो क्या यह थोड़ा चिंताजनक नहीं है?&lt;/p>
&lt;p>जैसे, &amp;ldquo;अगर वह रहस्य खुल गया तो सब खत्म हो जाएगा?&amp;rdquo;&lt;/p>
&lt;p>वास्तव में, यही वह बात है जिसने केरहॉफ्स के सिद्धांत को जन्म दिया।&lt;/p>
&lt;hr>
&lt;h2 id="करहफस-क-सदधत-आखर-ह-कय">&amp;ldquo;केरहॉफ्स का सिद्धांत&amp;rdquo; आखिर है क्या?
&lt;/h2>&lt;p>इसे बहुत ही सरल शब्दों में कहें, तो यह एक विचार है कि&lt;/p>
&lt;p>&lt;strong>&amp;ldquo;क्रिप्टोग्राफी सुरक्षित होनी चाहिए भले ही इसका तंत्र उजागर हो जाए।&amp;rdquo;&lt;/strong>&lt;/p>
&lt;p>अधिक स्पष्ट रूप से, &amp;ldquo;सुरक्षा को केवल &amp;lsquo;गुप्त कुंजी&amp;rsquo; पर निर्भर होना चाहिए, और क्रिप्टोग्राफी विधि स्वयं सार्वजनिक हो सकती है!&amp;rdquo;&lt;/p>
&lt;p>दूसरी ओर, &amp;ldquo;एक ऐसी स्थिति जहां एन्क्रिप्शन एल्गोरिदम (तंत्र) को गुप्त रखा जाता है, उसे कम विश्वसनीय माना जाता है।&amp;rdquo;&lt;/p>
&lt;hr>
&lt;h2 id="अगर-ततर-गपत-ह-त-सरकषत-ह-थड-खतरनक-ह-सकत-ह">&amp;ldquo;अगर तंत्र गुप्त है तो सुरक्षित है&amp;rdquo; थोड़ा खतरनाक हो सकता है
&lt;/h2>&lt;p>यह एक सामान्य सोच है:&lt;/p>
&lt;blockquote>
&lt;p>&amp;ldquo;मैंने इस ऐप के अंदर का हिस्सा किसी को नहीं दिखाया है, इसलिए सुरक्षा ठीक है&amp;rdquo;&lt;/p>
&lt;/blockquote>
&lt;p>मैं आपकी भावना समझता हूँ।&lt;br>
लेकिन यह कहने जैसा ही है: &amp;ldquo;कोई नहीं देख रहा है, इसलिए कोई खामी नहीं मिलेगी, है ना?&amp;rdquo;&lt;/p>
&lt;p>वास्तव में, वह &amp;ldquo;कोई नहीं देख रहा&amp;rdquo; अपने आप में एक जोखिम बन सकता है।&lt;/p>
&lt;hr>
&lt;h2 id="लकन-यह-सदधत-इतन-महतवपरण-कय-ह">लेकिन यह सिद्धांत इतना महत्वपूर्ण क्यों है?
&lt;/h2>&lt;p>क्योंकि, यदि कोई तंत्र पर अपना हाथ रख ले और उसे आसानी से समझ सके, तो वह क्रिप्टोग्राफी बेकार हो जाती है।&lt;/p>
&lt;p>एक सादृश्य का उपयोग करने के लिए, यह ऐसा है जैसे एक दरवाजे के ताले में एक बहुत ही जटिल तंत्र हो, लेकिन वास्तव में इसे एक डॉलर की दुकान पर बनाई गई अतिरिक्त चाबी से खोला जा सकता है।&lt;/p>
&lt;p>यह बात नहीं है कि &amp;ldquo;चाबी गुप्त है इसलिए यह ठीक है&amp;rdquo;, बल्कि &amp;ldquo;भले ही आप पूरा तंत्र दिखा दें, इसे सही चाबी के बिना खोला नहीं जा सकता&amp;rdquo; यह महत्वपूर्ण है।&lt;/p>
&lt;hr>
&lt;h2 id="लकन-कय-यह-थड-डरवन-नह-ह-क-भवन">&amp;ldquo;लेकिन, क्या यह थोड़ा डरावना नहीं है?&amp;rdquo; की भावना
&lt;/h2>&lt;p>यहाँ बहुत से लोग जो महसूस करते हैं वह है चिंता&lt;/p>
&lt;blockquote>
&lt;p>&amp;ldquo;क्या पूरे तंत्र को उजागर करना थोड़ा डरावना नहीं है?&amp;rdquo;&lt;/p>
&lt;/blockquote>
&lt;p>मैं समझता हूँ।&lt;br>
क्योंकि आप सोचते हैं: &amp;ldquo;अगर मैं अंदर का हिस्सा दिखा दूँ, तो क्या इसकी नकल नहीं की जाएगी या इसका दुरुपयोग नहीं किया जाएगा?&amp;rdquo;&lt;/p>
&lt;p>लेकिन यही केरहॉफ्स के सिद्धांत का मूल है।&lt;br>
वह &amp;ldquo;ताकत जो तब भी नहीं टूटती जब अंदर का हिस्सा दिखाया जाता है&amp;rdquo; ही सच्ची सुरक्षा है।&lt;/p>
&lt;hr>
&lt;h2 id="ऐस-कहन-क-बद-भ-शरआत-म-थड-हममत-चहए">ऐसा कहने के बाद भी, शुरुआत में थोड़ी हिम्मत चाहिए
&lt;/h2>&lt;p>डेवलपर के दृष्टिकोण से देखने पर, ऐसा लगता है जैसे &amp;ldquo;तंत्र प्रकाशित करना = कमजोरियों को उजागर करना&amp;rdquo;, इसलिए यह निश्चित रूप से परेशान करने वाला है।&lt;/p>
&lt;p>लेकिन इसके बारे में सोचें।&lt;/p>
&lt;p>कुछ ऐसा जिसे आप ठीक से दिखा सकें और कह सकें: &amp;ldquo;कोई भी इसे सत्यापित कर सकता है&amp;rdquo;, वह अंततः अधिक विश्वसनीय होता है।&lt;/p>
&lt;p>यह मानवीय रिश्तों के समान है।&lt;/p>
&lt;p>&amp;ldquo;एक ऐसा व्यक्ति जो आपके असली रूप को देखने के बाद भी आपके साथ अच्छी तरह से पेश आता है&amp;rdquo;, अंततः सबसे अधिक आश्वस्त करने वाला होता है।&lt;/p>
&lt;hr>
&lt;h2 id="अत-म">अंत में
&lt;/h2>&lt;p>केरहॉफ्स का सिद्धांत थोड़ा सैद्धांतिक लग सकता है, लेकिन इसका सार बहुत सरल है।&lt;/p>
&lt;p>यह बस की बात है &lt;strong>&amp;ldquo;आइए एक ऐसा तंत्र बनाएं जो टूटेगा नहीं चाहे आप इसे किसी को भी दिखाएं।&amp;rdquo;&lt;/strong>&lt;/p>
&lt;p>सतही रहस्यों के बजाय उचित डिज़ाइन।&lt;br>
उस कोड के बजाय जिसे आप किसी को नहीं दिखाना चाहते, ऐसा कोड जिसे दिखाने में आपको शर्म न आए।&lt;/p>
&lt;p>शायद आने वाले युग में ऐसी &amp;ldquo;ताकत&amp;rdquo; की और भी अधिक आवश्यकता होगी।&lt;/p>
&lt;hr>
&lt;p>पढ़ने के लिए बहुत-बहुत धन्यवाद!&lt;/p>
&lt;p>सुरक्षा के बारे में बात करना थोड़ा मुश्किल है, लेकिन इसके कुछ हिस्से &amp;ldquo;लोगों के साथ संबंध&amp;rdquo; और &amp;ldquo;रोजमर्रा की शांति&amp;rdquo; से भी जुड़ते हैं।&lt;br>
यदि आप बिना बोझिल महसूस किए थोड़ा-थोड़ा करके सीखते हैं, तो मुझे यकीन है कि अच्छी चीजें होंगी।&lt;/p>
&lt;hr>
&lt;p>&lt;img src="http://kenji.blog/p/%E3%82%B1%E3%83%AB%E3%82%AF%E3%83%9B%E3%83%95%E3%82%B9%E3%81%AE%E5%8E%9F%E7%90%86/img.png"
width="189"
height="282"
srcset="http://kenji.blog/p/%E3%82%B1%E3%83%AB%E3%82%AF%E3%83%9B%E3%83%95%E3%82%B9%E3%81%AE%E5%8E%9F%E7%90%86/img_hu715032b7fe5224f655ebb7d29b676305_77325_480x0_resize_box_3.png 480w, http://kenji.blog/p/%E3%82%B1%E3%83%AB%E3%82%AF%E3%83%9B%E3%83%95%E3%82%B9%E3%81%AE%E5%8E%9F%E7%90%86/img_hu715032b7fe5224f655ebb7d29b676305_77325_1024x0_resize_box_3.png 1024w"
loading="lazy"
alt="Auguste Kerckhoffs"
class="gallery-image"
data-flex-grow="67"
data-flex-basis="160px"
>&lt;/p></description></item><item><title>[गणितीय सूत्रों से पूर्ण समझ] क्लासिकल में सबसे शक्तिशाली 'GNFS' क्वांटम एल्गोरिदम से क्यों हारता है? अभाज्य गुणनखंडन का पैराडाइम शिफ्ट</title><link>http://kenji.blog/hi/p/gnfs-to-shors-algorithm-math-deepdive/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>http://kenji.blog/hi/p/gnfs-to-shors-algorithm-math-deepdive/</guid><description>&lt;img src="http://kenji.blog/p/gnfs-to-shors-algorithm-math-deepdive/quantum_vs_gnfs_eyecatch_1788616101508.jpg" alt="Featured image of post [गणितीय सूत्रों से पूर्ण समझ] क्लासिकल में सबसे शक्तिशाली 'GNFS' क्वांटम एल्गोरिदम से क्यों हारता है? अभाज्य गुणनखंडन का पैराडाइम शिफ्ट" />&lt;p>आधुनिक इंटरनेट समाज में सूचना सुरक्षा, RSA क्रिप्टोग्राफी जैसी पब्लिक-की क्रिप्टोग्राफी प्रणालियों द्वारा सुरक्षित है। RSA क्रिप्टोग्राफी की सुरक्षा का आधार इस तथ्य पर निर्भर करता है कि &lt;strong>&amp;ldquo;विशाल भाज्य संख्याओं का अभाज्य गुणनखंडन (Prime Factorization) कम्प्यूटेशनल रूप से अत्यंत कठिन है&amp;rdquo;&lt;/strong> ।&lt;/p>
&lt;p>इस लेख में, हम क्लासिकल कंप्यूटरों के लिए सबसे शक्तिशाली अभाज्य गुणनखंडन एल्गोरिदम &lt;strong>&amp;ldquo;सामान्य संख्या क्षेत्र चलनी&amp;rdquo;&lt;/strong> (General Number Field Sieve, GNFS) के गणितीय तंत्र को खोलेंगे, और गणितीय सूत्रों तथा वैचारिक आरेखों (concept diagrams) का उपयोग करके गहराई से यह विश्लेषण करेंगे कि यह पीटर शोर द्वारा खोजे गए &lt;strong>&amp;ldquo;शोर के एल्गोरिदम&amp;rdquo;&lt;/strong> (Shor&amp;rsquo;s Algorithm) से पूरी तरह क्यों हार जाता है, और यह पैराडाइम शिफ्ट कैसे होता है।&lt;/p>
&lt;hr>
&lt;h2 id="1-कलसकल-कपयटग-म-अभजय-गणनखडन-क-दषटकण-फरमट-क-अभजय-गणनखडन-वध-स-वकस">1. क्लासिकल कंप्यूटिंग में अभाज्य गुणनखंडन का दृष्टिकोण: फर्मेट की अभाज्य गुणनखंडन विधि से विकास
&lt;/h2>&lt;p>अभाज्य गुणनखंडन समस्या का अर्थ है, दी गई एक भाज्य संख्या (composite number) $N$ के लिए अभाज्य संख्याओं $p, q$ को खोजना, जिससे $N = p \times q$ हो।&lt;/p>
&lt;p>मूल विचार निम्नलिखित सर्वांगसमता (congruence) को संतुष्ट करने वाले गैर-तुच्छ (non-trivial) $x, y$ खोजने पर आ जाता है:&lt;/p>
$$ x^2 \equiv y^2 \pmod N $$
&lt;p>इसे रूपांतरित करने पर,&lt;/p>
$$ x^2 - y^2 \equiv 0 \pmod N $$
$$ (x - y)(x + y) \equiv 0 \pmod N $$
&lt;p>यहाँ, यदि $x \not\equiv \pm y \pmod N$ हो, तो $\gcd(x-y, N)$ या $\gcd(x+y, N)$ की गणना करके, $N$ का एक गैर-तुच्छ गुणनखंड प्राप्त किया जा सकता है। यह तथ्य GNFS जैसे आधुनिक अभाज्य गुणनखंडन एल्गोरिदम का आधार है।&lt;/p>
&lt;hr>
&lt;h2 id="2-कलसकल-क-सबस-शकतशल-एलगरदम-समनय-सखय-कषतर-चलन-gnfs-क-गहरई">2. क्लासिकल का सबसे शक्तिशाली एल्गोरिदम: &amp;ldquo;सामान्य संख्या क्षेत्र चलनी&amp;rdquo; (GNFS) की गहराई
&lt;/h2>&lt;p>&lt;strong>&amp;ldquo;GNFS&amp;rdquo;&lt;/strong> आज ज्ञात क्लासिकल कंप्यूटरों के लिए सबसे तेज़ अभाज्य गुणनखंडन एल्गोरिदम है। इसकी समय जटिलता (time complexity) उप-घातांकीय (Sub-exponential) समय लेती है।&lt;/p>
&lt;h3 id="gnfs-क-समय-जटलत">GNFS की समय जटिलता
&lt;/h3>&lt;p>जब संख्या $N$ के अंकों की संख्या $b = \log_2 N$ हो, तो GNFS की जटिलता इस प्रकार व्यक्त की जाती है:&lt;/p>
$$ O\left( \exp \left( \left(\frac{64}{9} b\right)^{1/3} (\log b)^{2/3} \right) \right) $$
&lt;p>जैसा कि इस सूत्र से देखा जा सकता है, जटिलता बहुपद समय (polynomial time) नहीं है, बल्कि घातांकीय फ़ंक्शन (exponential function) से थोड़ी धीमी &lt;strong>&amp;ldquo;उप-घातांकीय समय&amp;rdquo;&lt;/strong> (sub-exponential time) है। फिर भी, यदि अंकों की संख्या बढ़ती है तो गणना का समय खगोलीय रूप से बढ़ जाता है।&lt;/p>
&lt;h3 id="gnfs-क-गणतय-ततर">GNFS का गणितीय तंत्र
&lt;/h3>&lt;p>GNFS मुख्य रूप से 4 चरणों से मिलकर बना है:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>बहुपद चयन (Polynomial Selection)&lt;/strong>&lt;/li>
&lt;li>&lt;strong>छानना (Sieving)&lt;/strong>&lt;/li>
&lt;li>&lt;strong>मैट्रिक्स न्यूनीकरण (Matrix Reduction)&lt;/strong>&lt;/li>
&lt;li>&lt;strong>वर्गमूल की गणना (Square Root)&lt;/strong>&lt;/li>
&lt;/ol>
&lt;h4 id="21-बहपद-चयन-और-बजय-सखय-कषतर-algebraic-number-field">2.1. बहुपद चयन और बीजीय संख्या क्षेत्र (Algebraic Number Field)
&lt;/h4>&lt;p>सबसे पहले, पूर्णांक गुणांकों (integer coefficients) वाले अलघुकरणीय बहुपदों (irreducible polynomials) $f(x)$ और $g(x)$ को चुना जाता है। इन्हें इस प्रकार सेट किया जाता है कि इनका modulo $N$ पर एक सामान्य मूल $m$ हो। अर्थात,&lt;/p>
$$ f(m) \equiv 0 \pmod N $$
$$ g(m) \equiv 0 \pmod N $$
&lt;p>आमतौर पर, $g(x)$ को रैखिक बहुपद $g(x) = x - m$ के रूप में चुना जाता है। यदि $f(x)$ के मूल को $\alpha$ मान लिया जाए, तो $\mathbb{Q}(\alpha)$ नामक &lt;strong>&amp;ldquo;संख्या क्षेत्र&amp;rdquo;&lt;/strong> (Number Field) बनता है। $\mathbb{Q}(\alpha)$ के वलय (ring) में संचालन और सामान्य पूर्णांक वलय $\mathbb{Z}$ के संचालन की तुलना होमोमोर्फिज़्म (homomorphism) $\phi: \alpha \mapsto m$ के माध्यम से की जाती है।&lt;/p>
&lt;h4 id="22-छनन-sieving">2.2. छानना (Sieving)
&lt;/h4>&lt;p>इसके बाद, सह-अभाज्य (coprime) पूर्णांकों के जोड़े $(a, b)$ की बड़ी संख्या में खोज की जाती है। इसका उद्देश्य ऐसे जोड़े खोजना है जहाँ निम्नलिखित 2 मान &lt;strong>&amp;ldquo;B-स्मूथ&amp;rdquo;&lt;/strong> (B-smooth, केवल अपेक्षाकृत छोटे अभाज्य गुणनखंडों से बने) हों:&lt;/p>
&lt;ol>
&lt;li>$a - bm$ (पूर्णांक वलय पर मान)&lt;/li>
&lt;li>$b^d f(a/b)$ (संख्या क्षेत्र पर मानदंड $N(a - b\alpha)$ के अनुरूप)&lt;/li>
&lt;/ol>
&lt;p>यहाँ &lt;strong>&amp;ldquo;चलनी&amp;rdquo;&lt;/strong> (Sieve) नामक एक तेज़ खोज तकनीक का उपयोग किया जाता है। इसके द्वारा, विशाल उम्मीदवारों में से शर्तों को पूरा करने वाले $(a, b)$ जोड़ों को कुशलतापूर्वक निकाला जाता है।&lt;/p>
&lt;h4 id="23-मटरकस-नयनकरण-linear-algebra-over-gf2">2.3. मैट्रिक्स न्यूनीकरण (Linear Algebra over GF(2))
&lt;/h4>&lt;p>एकत्र किए गए जोड़े $(a, b)$ से, घातांक सदिश (exponent vectors) का निर्माण किया जाता है, और एक विशाल विरल मैट्रिक्स (sparse matrix) के बाएँ शून्य स्थान (left null space) को $\mathbb{F}_2$ (वह क्षेत्र जिसमें केवल 0 और 1 तत्व होते हैं) पर ज्ञात किया जाता है।&lt;/p>
&lt;p>वेक्टर $v$ को एक समाधान के रूप में इस प्रकार खोजा जाता है कि संबंध $ \prod (a_i - b_i m) $ और $ \prod (a_i - b_i \alpha) $ दोनों वर्ग अवयव (square elements) बन जाएँ। यह,&lt;/p>
$$ M \mathbf{x} \equiv \mathbf{0} \pmod 2 $$
&lt;p>जैसी रैखिक समीकरण प्रणाली को हल करने के अलावा और कुछ नहीं है। यहाँ, ब्लॉक लैंक्ज़ोस एल्गोरिदम (Block Lanczos Algorithm) या ब्लॉक विडमैन एल्गोरिदम (Block Wiedemann Algorithm) जैसे उन्नत संख्यात्मक संगणना एल्गोरिदम का उपयोग किया जाता है।&lt;/p>
&lt;h4 id="24-वरगमल-क-गणन">2.4. वर्गमूल की गणना
&lt;/h4>&lt;p>अंत में, संख्या क्षेत्र और पूर्णांक वलय दोनों में वर्गमूल लिया जाता है, और $x^2 \equiv y^2 \pmod N$ संबंध प्राप्त किया जाता है। फिर, $\gcd(x-y, N)$ की गणना की जाती है और गुणनखंड प्राप्त किया जाता है।&lt;/p>
&lt;hr>
&lt;h2 id="3-कवटम-कपयटग-दवर-सफलत-शर-क-एलगरदम-shors-algorithm">3. क्वांटम कंप्यूटिंग द्वारा सफलता: &amp;ldquo;शोर का एल्गोरिदम&amp;rdquo; (Shor&amp;rsquo;s Algorithm)
&lt;/h2>&lt;p>जबकि GNFS को उप-घातांकीय समय की आवश्यकता होती है, 1994 में पीटर शोर द्वारा प्रस्तुत किया गया &lt;strong>&amp;ldquo;शोर का एल्गोरिदम&amp;rdquo;&lt;/strong> , क्वांटम कंप्यूटर का उपयोग करके इस समस्या को &lt;strong>&amp;ldquo;बहुपद समय&amp;rdquo;&lt;/strong> (Polynomial Time) में हल कर सकता है।&lt;/p>
&lt;h3 id="शर-क-एलगरदम-क-समय-जटलत">शोर के एल्गोरिदम की समय जटिलता
&lt;/h3>&lt;p>जब क्यूबिट्स की संख्या $O(\log N)$ हो, तो समय जटिलता इस प्रकार होती है:&lt;/p>
$$ O((\log N)^3) $$
&lt;p>इसका मतलब यह है कि यह बिट्स की संख्या के सापेक्ष घातांकीय विस्फोट नहीं करता है। यह एक आश्चर्यजनक परिणाम है कि &lt;strong>&amp;ldquo;क्वांटम कंप्यूटिंग&amp;rdquo;&lt;/strong> कुछ घंटों से कुछ दिनों में उन विशाल भाज्य संख्याओं को डिक्रिप्ट कर सकता है, जिनकी &lt;strong>&amp;ldquo;क्लासिकल कंप्यूटिंग&amp;rdquo;&lt;/strong> के लिए गणना का समय ब्रह्मांड के जीवनकाल से भी अधिक होगा।&lt;/p>
&lt;h3 id="शर-क-एलगरदम-क-समगर-दशय-आवरत-खज-समसय-period-finding-problem-म-कम">शोर के एल्गोरिदम का समग्र दृश्य: आवर्त खोज समस्या (Period Finding Problem) में कमी
&lt;/h3>&lt;p>शोर का एल्गोरिदम अभाज्य गुणनखंडन समस्या को बड़ी चतुराई से &lt;strong>&amp;ldquo;आवर्त खोज समस्या&amp;rdquo;&lt;/strong> में बदल देता है।&lt;/p>
&lt;ol>
&lt;li>$N$ के साथ सह-अभाज्य एक यादृच्छिक पूर्णांक $a$ चुनें ($1 &lt; a &lt; N$)।&lt;/li>
&lt;li>फलन $f(x) = a^x \bmod N$ परिभाषित करें।&lt;/li>
&lt;li>$f(x)$ का आवर्त (period) $r$ खोजें, अर्थात वह सबसे छोटा धनात्मक पूर्णांक $r$ जिसके लिए $a^r \equiv 1 \pmod N$ हो।&lt;/li>
&lt;li>यदि $r$ सम (even) है, तो जांचें कि क्या $a^{r/2} \not\equiv -1 \pmod N$ है, और अभाज्य गुणनखंड प्राप्त करने के लिए $\gcd(a^{r/2} \pm 1, N)$ की गणना करें।&lt;/li>
&lt;/ol>
&lt;p>चरण 3 में यह &lt;strong>&amp;ldquo;आवर्त $r$ की खोज&amp;rdquo;&lt;/strong> ही वह बाधा है जिसमें क्लासिकल कंप्यूटर को घातांकीय समय लगता है, लेकिन क्वांटम कंप्यूटर &lt;strong>&amp;ldquo;क्वांटम सुपरपोज़िशन&amp;rdquo;&lt;/strong> और &lt;strong>&amp;ldquo;क्वांटम फूरियर ट्रांसफॉर्म&amp;rdquo;&lt;/strong> (QFT) का उपयोग करके इसे पल भर में हल कर देता है।&lt;/p>
&lt;hr>
&lt;h2 id="4-कवटम-फरयर-टरसफरम-qft-और-आवरत-क-नषकरषण">4. क्वांटम फूरियर ट्रांसफॉर्म (QFT) और आवर्त का निष्कर्षण
&lt;/h2>&lt;p>आइए शोर के एल्गोरिदम के मूल, क्वांटम अवस्थाओं (quantum states) के संचालन को गणितीय सूत्रों के माध्यम से विस्तार से देखें।&lt;/p>
&lt;h3 id="41-कवटम-सपरपजशन-क-नरमण">4.1. क्वांटम सुपरपोज़िशन का निर्माण
&lt;/h3>&lt;p>सबसे पहले, 2 क्वांटम रजिस्टर तैयार किए जाते हैं। रजिस्टर 1 इनपुट $x$ की सुपरपोज़िशन अवस्था (superposition state) रखता है, और रजिस्टर 2 फलन के गणना परिणाम $f(x)$ को रखता है। प्रारंभिक अवस्था $|0\rangle |0\rangle$ पर हैडामर्ड ट्रांसफॉर्म (Hadamard Transform) लागू करके सभी संभावित $x$ का सुपरपोज़िशन बनाया जाता है।&lt;/p>
$$ |\psi_1\rangle = \frac{1}{\sqrt{Q}} \sum_{x=0}^{Q-1} |x\rangle |0\rangle $$
&lt;p>
(यहाँ $Q$, $N^2 \le Q &lt; 2N^2$ को पूरा करने वाली 2 की घात है)&lt;/p>
&lt;p>इसके बाद, क्वांटम ओरेकल $U_f$ का उपयोग करके $f(x) = a^x \bmod N$ की गणना की जाती है और इसे रजिस्टर 2 में संग्रहीत किया जाता है।&lt;/p>
$$ |\psi_2\rangle = U_f |\psi_1\rangle = \frac{1}{\sqrt{Q}} \sum_{x=0}^{Q-1} |x\rangle |a^x \bmod N\rangle $$
&lt;p>यहाँ मान लीजिए कि रजिस्टर 2 को मापा गया है (वास्तव में इसे मापे बिना भी गणितीय संरचना समान रहती है)। यदि कोई मान $y = a^{x_0} \bmod N$ देखा जाता है, तो रजिस्टर 1 की अवस्था उन सभी $x$ के सुपरपोज़िशन में सिमट (collapse) जाती है जिनके लिए $f(x) = y$ होता है। यदि आवर्त $r$ है, तो ऐसे $x$, $x_0, x_0 + r, x_0 + 2r, \dots$ होंगे।&lt;/p>
$$ |\psi_3\rangle = \frac{1}{\sqrt{M}} \sum_{k=0}^{M-1} |x_0 + kr\rangle $$
&lt;p>
(यहाँ $M \approx Q/r$ पदों की संख्या है)&lt;/p>
&lt;p>यह अवस्था आवर्त $r$ की जानकारी को अंतर्निहित रखती है, लेकिन इसे सीधे मापने पर केवल एक यादृच्छिक (random) $x_0 + kr$ प्राप्त होगा, और आवर्त $r$ ज्ञात नहीं होगा। यहीं पर QFT काम आता है।&lt;/p>
&lt;h3 id="42-कवटम-फरयर-टरसफरम-quantum-fourier-transform-लग-करन">4.2. क्वांटम फूरियर ट्रांसफॉर्म (Quantum Fourier Transform) लागू करना
&lt;/h3>&lt;p>QFT एक ऐसा ऑपरेशन है जो क्वांटम अवस्थाओं के आयामों (amplitudes) पर असतत फूरियर ट्रांसफॉर्म (Discrete Fourier Transform) करता है। अवस्था $|x\rangle$ पर QFT की क्रिया को इस प्रकार परिभाषित किया गया है:&lt;/p>
$$ \text{QFT} |x\rangle = \frac{1}{\sqrt{Q}} \sum_{y=0}^{Q-1} e^{2\pi i \frac{xy}{Q}} |y\rangle $$
&lt;p>जब इसे $|\psi_3\rangle$ पर लागू किया जाता है, तो चरण हस्तक्षेप (क्वांटम इंटरफेरेंस) होता है।&lt;/p>
$$ |\psi_4\rangle = \text{QFT} |\psi_3\rangle = \frac{1}{\sqrt{MQ}} \sum_{y=0}^{Q-1} \sum_{k=0}^{M-1} e^{2\pi i \frac{(x_0 + kr)y}{Q}} |y\rangle $$
&lt;p>इस समीकरण के योग का विस्तार करने पर,&lt;/p>
$$ \sum_{k=0}^{M-1} e^{2\pi i \frac{kry}{Q}} $$
&lt;p>यह भाग प्रकट होता है। इस ज्यामितीय श्रेणी का योग केवल तभी एक-दूसरे को मजबूत करता है (Constructive Interference) जब $ry/Q$ एक पूर्णांक के करीब होता है, और अन्य समय में यह एक-दूसरे को रद्द (Destructive Interference) कर देता है।&lt;/p>
&lt;p>इसलिए, उच्च संभावना के साथ मापी जाने वाली अवस्था $|y\rangle$ वह होगी जिसके लिए,&lt;/p>
$$ \frac{y}{Q} \approx \frac{c}{r} $$
&lt;p>शर्त को पूरा करने वाला पूर्णांक $y$ हो ($c$ कोई पूर्णांक है)।&lt;/p>
&lt;h3 id="43-नरतर-भनन-वसतर-continued-fraction-expansion-दवर-आवरत-क-पहचन">4.3. निरंतर भिन्न विस्तार (Continued Fraction Expansion) द्वारा आवर्त की पहचान
&lt;/h3>&lt;p>माप से $y$ प्राप्त करने के बाद, क्लासिकल कंप्यूटर का उपयोग करके $y/Q$ का &lt;strong>&amp;ldquo;निरंतर भिन्न विस्तार&amp;rdquo;&lt;/strong> (Continued Fraction Expansion) किया जाता है। इसके द्वारा, $y/Q$ के अनुमानित भिन्न $c/r$ की गणना की जाती है, और हर (denominator) से आवर्त $r$ के उम्मीदवार को अत्यधिक कुशलता से निकाला जा सकता है।&lt;/p>
&lt;hr>
&lt;h2 id="5-वचरक-मडल-क-तलन-और-परडइम-शफट">5. वैचारिक मॉडल की तुलना और पैराडाइम शिफ्ट
&lt;/h2>&lt;p>GNFS और शोर के एल्गोरिदम के बीच के अंतर को सहज रूप से समझने के लिए, Mermaid सिंटैक्स का उपयोग करके एक वैचारिक आरेख (concept diagram) नीचे दिया गया है।&lt;/p>
&lt;h3 id="कवटम-सरकट-दवर-शर-क-एलगरदम-क-वचरक-आरख">क्वांटम सर्किट द्वारा शोर के एल्गोरिदम का वैचारिक आरेख
&lt;/h3>&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">graph TD
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> A[प्रारंभिक अवस्था: 0...0] --&amp;gt; B[Hadamard ट्रांसफॉर्म द्वारा सभी अवस्थाओं का सुपरपोज़िशन]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> B --&amp;gt; C[मॉड्यूलर घातांक गणना a^x mod N]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> C --&amp;gt;|क्वांटम एंटैंगलमेंट| D[आवधिकता (periodicity) वाली अवस्था में सिमटना]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> D --&amp;gt; E[क्वांटम फूरियर ट्रांसफॉर्म QFT]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> E --&amp;gt;|हस्तक्षेप (Interference) द्वारा प्रायिकता प्रवर्धन| F[माप: y प्राप्त करना]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> F --&amp;gt; G[क्लासिकल प्रक्रिया: निरंतर भिन्न विस्तार]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> G --&amp;gt; H[आवर्त r की खोज]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> H --&amp;gt; I[N के अभाज्य गुणनखंडों की गणना]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> style A fill:#f9f,stroke:#333,stroke-width:2px
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> style E fill:#bbf,stroke:#333,stroke-width:2px
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> style I fill:#bfb,stroke:#333,stroke-width:2px
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h3 id="परडइम-शफट-क-सर">पैराडाइम शिफ्ट का सार
&lt;/h3>&lt;p>GNFS &lt;strong>&amp;ldquo;गणितीय स्थान (संख्या क्षेत्र) में संबंधों को खोजने&amp;rdquo;&lt;/strong> का दृष्टिकोण अपनाता है। हालाँकि, चूँकि खोज स्थान अंकों की संख्या के सापेक्ष घातांकीय रूप से फैलता है, इसलिए क्लासिकल कंप्यूटर की गणना क्षमता (समानांतरकरण सहित) के साथ, जब कुंजी की लंबाई 2048 बिट्स आदि से अधिक हो जाती है तो इसे डिक्रिप्ट करना लगभग असंभव हो जाता है।&lt;/p>
&lt;p>दूसरी ओर, शोर का एल्गोरिदम &lt;strong>&amp;ldquo;क्वांटम हस्तक्षेप के कारण तरंग गुणों&amp;rdquo;&lt;/strong> का उपयोग करता है। यह सुपरपोज़िशन अवस्था में सभी गणना पथों (computation paths) का एक साथ मूल्यांकन करता है, और QFT द्वारा अवांछित उत्तरों को रद्द (Destructive Interference) कर देता है, तथा केवल सही उत्तर वाले आवर्त के प्रायिकता आयाम (probability amplitude) को प्रवर्धित (Constructive Interference) करता है। इससे यह स्थान को खोजने के बजाय, &lt;strong>&amp;ldquo;सही उत्तर को ही सामने लाने&amp;rdquo;&lt;/strong> के एक बिल्कुल अलग आयाम का दृष्टिकोण प्राप्त करता है।&lt;/p>
&lt;h2 id="6-नषकरष">6. निष्कर्ष
&lt;/h2>&lt;p>इस लेख में, हमने क्लासिकल सीमाओं की चरम सीमा &lt;strong>&amp;ldquo;GNFS&amp;rdquo;&lt;/strong> और क्वांटम कंप्यूटिंग की शक्ति प्रदर्शित करने वाले &lt;strong>&amp;ldquo;शोर के एल्गोरिदम&amp;rdquo;&lt;/strong> के गणितीय पृष्ठभूमि और एल्गोरिथम संरचना की गहराई से तुलना की है।&lt;/p>
&lt;p>जबकि GNFS ने बहुपद चयन और विशाल मैट्रिक्स गणना जैसी गणितीय तकनीकों का उपयोग करके समय जटिलता को उप-घातांकीय समय तक कम किया, शोर के एल्गोरिदम ने क्वांटम यांत्रिकी के मूल सिद्धांतों, सुपरपोज़िशन और हस्तक्षेप को गणितीय उपकरण (QFT) के साथ मिलाया, और एक ही झटके में बहुपद समय की सफलता प्राप्त की।&lt;/p>
&lt;p>वर्तमान में, व्यावहारिक पैमाने (हजारों क्यूबिट्स) पर शोर के एल्गोरिदम को चलाने में सक्षम कोई दोष-सहिष्णु क्वांटम कंप्यूटर (Fault-Tolerant Quantum Computer, FTQC) मौजूद नहीं है। हालाँकि, इस गणितीय और सैद्धांतिक पैराडाइम शिफ्ट का अस्तित्व ही वह सबसे बड़ा कारण है कि वर्तमान में दुनिया भर में पोस्ट-क्वांटम क्रिप्टोग्राफी (PQC) की ओर संक्रमण में तेज़ी आ रही है।&lt;/p></description></item></channel></rss>