⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rsadesign.html

📁 RSA公钥加密的基本实现 bmp灰度图片加解密操作包括 RSA 的加减密算法; 素数检测算法;RSA 密钥生成算法; 应用该 RSA 密码体制加、解密; BMP 灰度图的算法; Pollard p-1
💻 HTML
📖 第 1 页 / 共 2 页
字号:
<?xml version="1.0" encoding="iso-8859-1"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><title>G:\RSA\RSADesign.cpp</title><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /><meta name="generator" content="Code::Blocks Exporter plugin" /><style type="text/css"><!--body { color: #000000; background-color: #FFFFFF; }.style1 { color: #A0A0A0; }.style2 { color: #A0A0A0; }.style3 { color: #8080FF; font-weight: bold; }.style15 { color: #8080FF; font-weight: bold; }.style17 { color: #008080; }.style18 { color: #800000; }.style4 { color: #F000F0; }.style5 { color: #0000A0; font-weight: bold; }.style16 { color: #00A000; font-weight: bold; }.style6 { color: #0000FF; }.style12 { color: #0000FF; }.style7 { color: #E0A000; }.style8 { color: #000000; }.style9 { color: #00A000; }.style10 { color: #FF0000; }.style34 { color: #000000; background-color: #80FFFF; font-weight: bold; }.style35 { color: #FFFFFF; background-color: #FF0000; font-weight: bold; }--></style></head><body><pre><code><span style="font: 11pt Courier New;"><span class="style9">#include "RSA.h"#include &lt;iostream&gt;#include &lt;stdlib.h&gt;</span><span class="style5">using namespace </span><span class="style11">std</span><span class="style10">;</span><span class="style5">long </span><span class="style11">MillerRabin</span><span class="style10">(</span><span class="style5">long </span><span class="style11">n</span><span class="style10">)</span><span class="style2">//Prime check, is return n;else return -1</span><span class="style10">{</span><span class="style2">//n-1=2^k * m    </span><span class="style5">long </span><span class="style11">k</span><span class="style10">=</span><span class="style4">0</span><span class="style10">,</span><span class="style11">m</span><span class="style10">=</span><span class="style4">0</span><span class="style10">;    </span><span class="style5">long </span><span class="style11">newn</span><span class="style10">=</span><span class="style11">n</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">m </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="style5">if </span><span class="style10">(</span><span class="style11">OddEvenTest</span><span class="style10">(</span><span class="style11">newn</span><span class="style10">)==</span><span class="style4">1</span><span class="style10">)        {            </span><span class="style11">m</span><span class="style10">=</span><span class="style11">newn</span><span class="style10">;            </span><span class="style5">break</span><span class="style10">;        }        </span><span class="style5">else        </span><span class="style10">{            </span><span class="style11">newn</span><span class="style10">=</span><span class="style11">newn</span><span class="style10">/</span><span class="style4">2</span><span class="style10">;            </span><span class="style11">k</span><span class="style10">++;        }    }</span><span class="style2">//    cout &lt;&lt; "n-1 =" &lt;&lt; n-1 &lt;&lt;" "&lt;&lt; "k m"&lt;&lt;k &lt;&lt;" "&lt;&lt;m&lt;&lt;endl;//get a ;1&lt;=a&lt;=n-1    </span><span class="style5">long </span><span class="style11">tempa</span><span class="style10">[</span><span class="style11">MAX_N</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">i</span><span class="style10">=</span><span class="style4">0</span><span class="style10">; </span><span class="style11">i</span><span class="style10">&lt;</span><span class="style11">MAX_N </span><span class="style10">;</span><span class="style11">i</span><span class="style10">++)        </span><span class="style11">tempa</span><span class="style10">[</span><span class="style11">i</span><span class="style10">]=</span><span class="style11">i</span><span class="style10">;    </span><span class="style11">srand</span><span class="style10">((</span><span class="style5">unsigned</span><span class="style10">)</span><span class="style11">time</span><span class="style10">(</span><span class="style11">NULL</span><span class="style10">));    </span><span class="style5">long </span><span class="style11">a </span><span class="style10">= </span><span class="style11">tempa</span><span class="style10">[</span><span class="style11">rand</span><span class="style10">()%(</span><span class="style11">n</span><span class="style10">-</span><span class="style4">1</span><span class="style10">)];</span><span class="style2">//b= a^m % n    </span><span class="style5">long </span><span class="style11">Binary_m</span><span class="style10">[</span><span class="style4">100</span><span class="style10">];</span><span class="style2">//Binary of m    </span><span class="style5">long </span><span class="style11">l_m</span><span class="style10">;</span><span class="style2">//length of m    </span><span class="style11">l_m</span><span class="style10">=</span><span class="style11">NumberToBinary</span><span class="style10">(</span><span class="style11">Binary_m</span><span class="style10">, </span><span class="style11">m</span><span class="style10">);    </span><span class="style5">long </span><span class="style11">b</span><span class="style10">=</span><span class="style11">SquareMultiply</span><span class="style10">(</span><span class="style11">Binary_m</span><span class="style10">, </span><span class="style11">n</span><span class="style10">, </span><span class="style11">a</span><span class="style10">, </span><span class="style11">l_m</span><span class="style10">);    </span><span class="style5">if </span><span class="style10">((</span><span class="style11">b</span><span class="style10">%</span><span class="style11">n</span><span class="style10">)==</span><span class="style4">1</span><span class="style10">)  </span><span class="style5">return </span><span class="style11">n</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">&lt;=</span><span class="style11">k</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="style5">if </span><span class="style10">((</span><span class="style11">b</span><span class="style10">%</span><span class="style11">n</span><span class="style10">)==</span><span class="style11">n</span><span class="style10">-</span><span class="style4">1</span><span class="style10">) </span><span class="style5">return </span><span class="style11">n</span><span class="style10">;        </span><span class="style5">else </span><span class="style11">b</span><span class="style10">=(</span><span class="style11">b</span><span class="style10">*</span><span class="style11">b</span><span class="style10">)%</span><span class="style11">n</span><span class="style10">;    }    </span><span class="style5">return </span><span class="style10">-</span><span class="style4">1</span><span class="style10">;}</span><span class="style5">long </span><span class="style11">OddEvenTest</span><span class="style10">(</span><span class="style5">long </span><span class="style11">n</span><span class="style10">)</span><span class="style2">//if odd return 1, even return 2</span><span class="style10">{    </span><span class="style5">long </span><span class="style11">m </span><span class="style10">= </span><span class="style11">n</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">m</span><span class="style10">==</span><span class="style4">0</span><span class="style10">) </span><span class="style5">return </span><span class="style4">2</span><span class="style10">;    </span><span class="style5">else return </span><span class="style4">1</span><span class="style10">;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -