📄 rsadesign.html
字号:
}</span><span class="style5">long </span><span class="style11">NumberToBinary</span><span class="style10">(</span><span class="style5">long </span><span class="style10">*</span><span class="style11">Out</span><span class="style10">, </span><span class="style5">long </span><span class="style11">In</span><span class="style10">)</span><span class="style2">//Number change to Binary, ok return bits</span><span class="style10">{ </span><span class="style5">long </span><span class="style11">count</span><span class="style10">=</span><span class="style4">0</span><span class="style10">; </span><span class="style5">long </span><span class="style11">tempin</span><span class="style10">=</span><span class="style11">In</span><span class="style10">; </span><span class="style5">long </span><span class="style11">temp</span><span class="style10">[</span><span class="style11">MAX_E_D</span><span class="style10">]={</span><span class="style4">0</span><span class="style10">}; </span><span class="style5">do</span><span class="style10">{ </span><span class="style11">temp</span><span class="style10">[</span><span class="style11">count</span><span class="style10">]=</span><span class="style11">tempin</span><span class="style10">%</span><span class="style4">2</span><span class="style10">; </span><span class="style11">tempin</span><span class="style10">=</span><span class="style11">tempin</span><span class="style10">/</span><span class="style4">2</span><span class="style10">; </span><span class="style5">if </span><span class="style10">(</span><span class="style11">tempin</span><span class="style10">==</span><span class="style4">1</span><span class="style10">) { </span><span class="style11">temp</span><span class="style10">[</span><span class="style11">count</span><span class="style10">+</span><span class="style4">1</span><span class="style10">]=</span><span class="style4">1</span><span class="style10">; </span><span class="style5">break</span><span class="style10">; } </span><span class="style11">count</span><span class="style10">++; }</span><span class="style5">while</span><span class="style10">(</span><span class="style4">1</span><span class="style10">); </span><span class="style11">count</span><span class="style10">=</span><span class="style11">count</span><span class="style10">+</span><span class="style4">2</span><span class="style10">;</span><span class="style2">// bits=&count; </span><span class="style5">long </span><span class="style11">i</span><span class="style10">=</span><span class="style4">0</span><span class="style10">; </span><span class="style5">for </span><span class="style10">(</span><span class="style5">long </span><span class="style11">j</span><span class="style10">=</span><span class="style11">count</span><span class="style10">-</span><span class="style4">1</span><span class="style10">; </span><span class="style11">i</span><span class="style10"><</span><span class="style11">count</span><span class="style10">; </span><span class="style11">i</span><span class="style10">++) { </span><span class="style11">Out</span><span class="style10">[</span><span class="style11">j</span><span class="style10">]=</span><span class="style11">temp</span><span class="style10">[</span><span class="style11">i</span><span class="style10">]; </span><span class="style11">j</span><span class="style10">--; } </span><span class="style5">return </span><span class="style11">count</span><span class="style10">;}</span><span class="style5">long </span><span class="style11">SquareMultiply</span><span class="style10">(</span><span class="style5">long </span><span class="style10">*</span><span class="style11">In</span><span class="style10">, </span><span class="style5">long </span><span class="style11">n</span><span class="style10">, </span><span class="style5">long </span><span class="style11">x</span><span class="style10">, </span><span class="style5">long </span><span class="style11">l</span><span class="style10">)</span><span class="style2">//Square_And_Multiply, z=x^c mod n, In is the z's Binary, l is the In's length</span><span class="style10">{ </span><span class="style5">long long </span><span class="style11">z</span><span class="style10">=</span><span class="style4">1</span><span class="style10">; </span><span class="style5">for </span><span class="style10">(</span><span class="style5">long </span><span class="style11">i</span><span class="style10">=</span><span class="style4">0</span><span class="style10">; </span><span class="style11">i</span><span class="style10"><=</span><span class="style11">l</span><span class="style10">-</span><span class="style4">1</span><span class="style10">; </span><span class="style11">i</span><span class="style10">++) { </span><span class="style11">z</span><span class="style10">=(</span><span class="style11">z</span><span class="style10">*</span><span class="style11">z</span><span class="style10">)%</span><span class="style11">n</span><span class="style10">; </span><span class="style5">if </span><span class="style10">(</span><span class="style11">In</span><span class="style10">[</span><span class="style11">i</span><span class="style10">]==</span><span class="style4">1</span><span class="style10">) { </span><span class="style11">z</span><span class="style10">=(</span><span class="style11">z</span><span class="style10">*</span><span class="style11">x</span><span class="style10">)%</span><span class="style11">n</span><span class="style10">; } } </span><span class="style5">return </span><span class="style11">z</span><span class="style10">;}</span><span class="style5">long </span><span class="style11">MultiplicativeInverse</span><span class="style10">(</span><span class="style5">long </span><span class="style11">a</span><span class="style10">, </span><span class="style5">long </span><span class="style11">b</span><span class="style10">)</span><span class="style2">//get b_1</span><span class="style10">{ </span><span class="style5">long </span><span class="style11">a0</span><span class="style10">=</span><span class="style11">a</span><span class="style10">,</span><span class="style11">b0</span><span class="style10">=</span><span class="style11">b</span><span class="style10">,</span><span class="style11">t0</span><span class="style10">=</span><span class="style4">0</span><span class="style10">,</span><span class="style11">t</span><span class="style10">=</span><span class="style4">1</span><span class="style10">; </span><span class="style5">long </span><span class="style11">q</span><span class="style10">=</span><span class="style11">a0</span><span class="style10">/</span><span class="style11">b0</span><span class="style10">; </span><span class="style5">long </span><span class="style11">r</span><span class="style10">=</span><span class="style11">a0</span><span class="style10">-</span><span class="style11">q</span><span class="style10">*</span><span class="style11">b0</span><span class="style10">; </span><span class="style5">while </span><span class="style10">(</span><span class="style11">r</span><span class="style10">></span><span class="style4">0</span><span class="style10">) { </span><span class="style5">long </span><span class="style11">temp</span><span class="style10">=(</span><span class="style11">t0</span><span class="style10">-</span><span class="style11">q</span><span class="style10">*</span><span class="style11">t</span><span class="style10">)%</span><span class="style11">a</span><span class="style10">; </span><span class="style11">t0</span><span class="style10">=</span><span class="style11">t</span><span class="style10">; </span><span class="style11">t</span><span class="style10">=</span><span class="style11">temp</span><span class="style10">; </span><span class="style11">a0</span><span class="style10">=</span><span class="style11">b0</span><span class="style10">; </span><span class="style11">b0</span><span class="style10">=</span><span class="style11">r</span><span class="style10">; </span><span class="style11">q</span><span class="style10">=</span><span class="style11">a0</span><span class="style10">/</span><span class="style11">b0</span><span class="style10">; </span><span class="style11">r</span><span class="style10">=</span><span class="style11">a0</span><span class="style10">-</span><span class="style11">q</span><span class="style10">*</span><span class="style11">b0</span><span class="style10">; } </span><span class="style5">if </span><span class="style10">(</span><span class="style11">b0</span><span class="style10">!=</span><span class="style4">1</span><span class="style10">)</span><span class="style2">// cout<<NO b_1 exits!!!!<<endl; </span><span class="style5">return </span><span class="style10">-</span><span class="style4">1</span><span class="style10">; </span><span class="style5">else return </span><span class="style11">t</span><span class="style10">;}</span></span></code></pre></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -