亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? rsahelpdlg.cpp

?? 非對稱密碼系統,包含RSA,ECC,大數乘法。
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
// RsahelpDlg.cpp : implementation file
//

#include "stdafx.h"
#include "ASYMMETRIC KEY CRYPTOSYSTEM.h"
#include "RsahelpDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CRsahelpDlg dialog


CRsahelpDlg::CRsahelpDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CRsahelpDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CRsahelpDlg)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
}


void CRsahelpDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CRsahelpDlg)
	DDX_Control(pDX, IDC_TREERsa, m_TREERsa);
	DDX_Control(pDX, IDC_HelpRsa, m_HelpRsa);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CRsahelpDlg, CDialog)
	//{{AFX_MSG_MAP(CRsahelpDlg)
	ON_NOTIFY(TVN_SELCHANGED, IDC_TREERsa, OnSelchangedTree)
		// NOTE: the ClassWizard will add message map macros here
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CRsahelpDlg message handlers
BOOL CRsahelpDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();

 TV_INSERTSTRUCT TreeCtrlItem;

	TreeCtrlItem.hParent = TVI_ROOT;
	TreeCtrlItem.hInsertAfter = TVI_LAST;
	TreeCtrlItem.item.mask = TVIF_TEXT | TVIF_PARAM;
	TreeCtrlItem.item.pszText = _T("前言");
	TreeCtrlItem.item.lParam = 1;
	HTREEITEM hTreeItem0 = m_TREERsa.InsertItem(&TreeCtrlItem);

	TreeCtrlItem.hParent = TVI_ROOT;
	TreeCtrlItem.hInsertAfter = TVI_LAST;
	TreeCtrlItem.item.mask = TVIF_TEXT | TVIF_PARAM;
	TreeCtrlItem.item.pszText = _T("原理介紹");
	TreeCtrlItem.item.lParam = 0;
	HTREEITEM hTreeItem1 = m_TREERsa.InsertItem(&TreeCtrlItem);

	TreeCtrlItem.hParent = hTreeItem1;
	TreeCtrlItem.item.pszText = _T("大數存儲");
	TreeCtrlItem.item.lParam = 2;
	m_TREERsa.InsertItem(&TreeCtrlItem);

	TreeCtrlItem.hParent = hTreeItem1;
	TreeCtrlItem.item.pszText = _T("加法");
	TreeCtrlItem.item.lParam = 3;
	m_TREERsa.InsertItem(&TreeCtrlItem);  
	
	TreeCtrlItem.hParent = hTreeItem1;
	TreeCtrlItem.item.pszText = _T("減法");
	TreeCtrlItem.item.lParam = 4;
	m_TREERsa.InsertItem(&TreeCtrlItem); 

	TreeCtrlItem.hParent = hTreeItem1;
	TreeCtrlItem.item.pszText = _T("乘法");
	TreeCtrlItem.item.lParam = 5;
	m_TREERsa.InsertItem(&TreeCtrlItem);
	
	TreeCtrlItem.hParent = hTreeItem1;
	TreeCtrlItem.item.pszText = _T("除法");
	TreeCtrlItem.item.lParam = 6;
	m_TREERsa.InsertItem(&TreeCtrlItem);

	TreeCtrlItem.hParent = hTreeItem1;
	TreeCtrlItem.item.pszText = _T("取模");
	TreeCtrlItem.item.lParam = 7;
	m_TREERsa.InsertItem(&TreeCtrlItem); 
	
	TreeCtrlItem.hParent = hTreeItem1;
	TreeCtrlItem.item.pszText = _T("二元一次方程");
	TreeCtrlItem.item.lParam = 8;
	m_TREERsa.InsertItem(&TreeCtrlItem);

	TreeCtrlItem.hParent = hTreeItem1;
	TreeCtrlItem.item.pszText = _T("冪模運算");
	TreeCtrlItem.item.lParam = 9;
	m_TREERsa.InsertItem(&TreeCtrlItem);
	
	TreeCtrlItem.hParent = hTreeItem1;
	TreeCtrlItem.item.pszText = _T("素數測試");
	TreeCtrlItem.item.lParam = 10;
	m_TREERsa.InsertItem(&TreeCtrlItem);

	TreeCtrlItem.hParent = hTreeItem1;
	TreeCtrlItem.item.pszText = _T("輸入輸出");
	TreeCtrlItem.item.lParam = 11;
	m_TREERsa.InsertItem(&TreeCtrlItem);

	return TRUE;
}

void CRsahelpDlg::OnSelchangedTree(NMHDR* pNMHDR, LRESULT* pResult) 
{
	NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
	switch(pNMTreeView->itemNew.lParam)
	{
	case 0:
		break;
	case 1:
		m_Text="";
		m_Text+="\r\n";
		m_Text+="    俺曾經查閱了網上找得到的各種用于實現RSA 的大數運算庫,然而最終還是決定";
		m_Text+="\r\n";
		m_Text+="自己動手寫一個。因為凡是效率高速度快的代碼,如 crypto++、miracl、freelip、";
		m_Text+="\r\n";
		m_Text+="rsaref等,要么使用的算法過于復雜,要么編碼風格雜亂無章,俺的水平和耐心都實";
		m_Text+="\r\n";
		m_Text+="在是有限,以至于無法讀懂這些東西。而俺讀得懂的一些代碼,其實現方式卻又過于";
		m_Text+="\r\n";
		m_Text+="幼稚,效率極低速度一塌糊涂。俺想象俺這樣的人不在少數,于是決心做一個清晰易";
		m_Text+="\r\n";
		m_Text+="懂,效率也過得去的東西奉獻給大家。";
		m_Text+="\r\n";
		m_Text+="\r\n";
		m_Text+="    這個函數庫剛做好的時候,生成1024位的隨機密鑰耗時大約5 分鐘,俺認為是可";
		m_Text+="\r\n";
		m_Text+="以接受的。但后來找到一個叫tE! 的老外用miracl庫寫的RsaTools,發現其生成1024";
		m_Text+="\r\n";
		m_Text+="位的密鑰耗時不超過三秒鐘!于是俺針對俺的代碼開始了艱苦的優化工作,希望能達";
		m_Text+="\r\n";
		m_Text+="到甚至超過這一水平。一周之后1024位密鑰的平均生成時間已經降至5 秒以內,但是";
		m_Text+="\r\n";
		m_Text+="單單依靠優化代碼來進一步提高速度也非常困難了。于是俺開始借助金山詞霸來查閱";
		m_Text+="\r\n";
		m_Text+="能夠通過google找到的一切與Rsa 算法相關的論文,直到今天俺決定放棄,因為俺發";
		m_Text+="\r\n";
		m_Text+="現在改用越來越復雜的數學算法的同時俺離自己的初衷也越來越遠:俺的代碼也不再";
		m_Text+="\r\n";
		m_Text+="清晰易懂了。";
		m_Text+="\r\n";
		m_Text+="\r\n";
		m_Text+="    現在這個版本的函數庫采用了最簡單的結構和最容易理解的算法,速度也不算太";
		m_Text+="\r\n";
		m_Text+="慢,用C++ 語言,可在VC6.0 下直接編譯通過,希望大家喜歡。如果發現Bug 或者有";
		m_Text+="\r\n";
		m_Text+="好的修改建議,俺將非常感謝您能夠給俺一個Mail。";
		m_Text+="\r\n";
		m_Text+="\r\n";
		m_Text+="    最后,感謝看雪論壇,俺在此學到了很多知識,也要感謝雪兄多次熱心相助,當";
        m_Text+="\r\n";
		m_Text+="然還要乘機拍拍馬屁,感謝俺家甜甜的支持!";
		m_Text+="\r\n";
        m_Text+="\r\n";
		m_Text+="    afanty@vip.sina.com";
        m_HelpRsa.SetWindowText(m_Text);
		break;
	case 2:
		m_Text="";
		m_Text+="\r\n";
		m_Text+="    RSA 依賴大數運算,目前主流RSA 算法都建立在512 到1024位的大數運算之上。";
		m_Text+="\r\n";
		m_Text+="而大多數的編譯器只能支持到64位的整數運算,即我們在運算中所使用的整數必須小";
		m_Text+="\r\n";
		m_Text+="于等于64位,即:0xffffffffffffffff,也就是18446744073709551615,這遠遠達不";
		m_Text+="\r\n";
		m_Text+="到RSA 的需要,于是需要專門建立大數運算庫來解決這一問題。";
		m_Text+="\r\n";
		m_Text+="\r\n";
		m_Text+="    最簡單的辦法是將大數當作數組進行處理,也就是將大數用0—9這十個數字組成";
		m_Text+="\r\n";
		m_Text+="的數組進行表示,然后模擬人們手工進行“豎式計算”的過程編寫其加減乘除函數。";
		m_Text+="\r\n";
		m_Text+="但是這樣做效率很低,因為二進制為1024位的大數其十進制也有三百多位,對于任何";
		m_Text+="\r\n";
		m_Text+="一種運算,都需要在兩個有數百個元素的數組空間上做多重循環,還需要許多額外的";
		m_Text+="\r\n";
		m_Text+="空間存放計算的進退位標志及中間結果。另外,對于某些特殊的運算而言,采用二進";
		m_Text+="\r\n";
		m_Text+="制會使計算過程大大簡化,這種大數表示方法轉化成二進制顯然非常麻煩,所以在某";
		m_Text+="\r\n";
		m_Text+="些實例中則干脆采用了二進制數組的方法來記錄大數,這樣效率就更低了。";
		m_Text+="\r\n";
		m_Text+="\r\n";
		m_Text+="    一個有效的改進方法是將大數表示為一個n 進制數組,對于目前的32位系統而言";
		m_Text+="\r\n";
		m_Text+="n 可以取值為2 的32次方,即0x10000000,假如將一個二進制為1024位的大數轉化成";
		m_Text+="\r\n";
		m_Text+="0x10000000進制,它就變成了32位,而每一位的取值范圍就不是二進制的0—1或十進";
		m_Text+="\r\n";
		m_Text+="制的0—9,而是0-0xffffffff,我們正好可以用一個無符號長整數來表示這一數值。";
		m_Text+="\r\n";
		m_Text+="所以1024位的大數就是一個有32個元素的unsigned long數組,針對unsigned long數";
		m_Text+="\r\n";
		m_Text+="組進行各種運算所需的循環規模至多32次而已。而且0x100000000 進制與二進制,對";
		m_Text+="\r\n";
		m_Text+="于計算機來說,幾乎是一回事,轉換非常容易。";
		m_Text+="\r\n";
		m_Text+="\r\n";
		m_Text+="    例如大數18446744073709551615,等于 ffffffff ffffffff,就相當于十進制的";
		m_Text+="\r\n";
		m_Text+="99:有兩位,每位都是ffffffff。而18446744073709551616 等于00000001 00000000";
		m_Text+="\r\n";
		m_Text+="00000000,就相當于十進制的100:有三位,第一位是1 ,其它兩位是0,如此等等。";
		m_Text+="\r\n";
		m_Text+="在實際應用中,“數字”數組的排列順序采用低位在前高位在后的方式,這樣,大數";
		m_Text+="\r\n";
		m_Text+="A 就可以方便地用數學表達式來表示其值:A=Sum[i=0 to n](A[i]*0x100000000**i)";
		m_Text+="\r\n";
		m_Text+="(其中Sum 表示求和,A[i]表示用以記錄A 的數組的第i 個元素,**表示乘方)。";
		m_Text+="\r\n";
		m_Text+="\r\n";
		m_Text+="    任何整數運算最終都能分解成數字與數字之間的運算,在0x100000000 進制下其";
		m_Text+="\r\n";
		m_Text+="“數字”最大達到0xffffffff,其數字與數字之間的運算,結果也必然超出了目前32";
		m_Text+="\r\n";
		m_Text+="系統的字長。在VC++中,存在一個__int64 類型可以處理64位的整數,所以不用擔心";
		m_Text+="\r\n";
		m_Text+="這一問題,而在其它編譯系統中如果不存在64位整形,就需要采用更小的進制方式來";
		m_Text+="\r\n";
		m_Text+="存儲大數,例如WORD類型(16位)可以用來表示0x10000 進制,但效率更高的辦法還";
		m_Text+="\r\n";
		m_Text+="是采用32位的DWORD 類型,只不過將0x100000000 進制改成0x40000000進制,這樣兩";
		m_Text+="\r\n";
		m_Text+="個數字進行四則運算的最大結果為 0x3fffffff * 0x3fffffff,小于0xffffffff,只";
		m_Text+="\r\n";
		m_Text+="是不能簡單地用高位低位來將運算結果拆分成兩個“數字”。";
		m_Text+="\r\n";
		m_Text+="\r\n";
        m_HelpRsa.SetWindowText(m_Text);
		break;
	case 3:
        m_Text="";
		m_Text+="\r\n";
		m_Text+="設:";
		m_Text+="\r\n";
		m_Text+="  A=Sum[i=0 to p](A[i]*0x100000000**i)";
		m_Text+="\r\n";
		m_Text+="  B=Sum[i=0 to q](B[i]*0x100000000**i),p>=q";
		m_Text+="\r\n";
		m_Text+="  C=Sum[i=0 to n](C[i]*0x100000000**i)=A+B";
		m_Text+="\r\n";
		m_Text+="\r\n";
		m_Text+="顯然:";
		m_Text+="\r\n";
		m_Text+="  C[i]不是簡單地等于A[i]+B[i],因為如果C[i]>0xffffffff就需要進位,當然計算";
		m_Text+="\r\n";
		m_Text+="  C[i-1]時也可能產生了進位,所以計算C[i]時還要加上上次的進位值。";
		m_Text+="\r\n";
		m_Text+="\r\n";
		m_Text+="如果用carry[i]記錄每次的進位則有:";
		m_Text+="\r\n";
		m_Text+="  C[i]=A[i]+B[i]+carry[i-1]-carry[i]*0x100000000";
		m_Text+="\r\n";
		m_Text+="  其中carry[-1]=0";
		m_Text+="\r\n";
		m_Text+="  若A[i]+B[i]+carry[i-1]>0xffffffff,則carry[i]=1;反之則carry[i]=0";
		m_Text+="\r\n";
		m_Text+="  若carry[p]=0,則n=p;反之則n=p+1";
		m_Text+="\r\n";
		m_Text+="\r\n";
        m_HelpRsa.SetWindowText(m_Text);
		break;
	case 4:
        m_Text="";
		m_Text+="\r\n";
		m_Text+="設:";
		m_Text+="\r\n";
		m_Text+="  A=Sum[i=0 to p](A[i]*0x100000000**i)";
		m_Text+="\r\n";
		m_Text+="  B=Sum[i=0 to q](B[i]*0x100000000**i),p>=q";
		m_Text+="\r\n";
		m_Text+="  C=Sum[i=0 to n](C[i]*0x100000000**i)=A-B";
		m_Text+="\r\n";
		m_Text+="\r\n";
		m_Text+="顯然:";
		m_Text+="\r\n";
		m_Text+="  C[i]不是簡單地等于A[i]-B[i],因為如果A[i]<B[i]就需要借位,當然計算";
		m_Text+="\r\n";
		m_Text+="  C[i-1]時也可能產生了借位,所以計算C[i]時還要減去上次的借位值。";
		m_Text+="\r\n";
		m_Text+="\r\n";
		m_Text+="如果用carry[i]記錄每次的借位則有:";
		m_Text+="\r\n";
		m_Text+="  C[i]=A[i]+carry[i]*0x100000000-B[i]-carry[i-1]";
		m_Text+="\r\n";
		m_Text+="  其中carry[-1]=0";
		m_Text+="\r\n";
		m_Text+="  若A[i]>B[i]則carry[i]=0;反之則carry[i]=1";
		m_Text+="\r\n";
		m_Text+="  若C[p]=0,則n=p-1;反之則n=p";
		m_Text+="\r\n";
		m_Text+="\r\n";
        m_HelpRsa.SetWindowText(m_Text);
		break;
	case 5:
        m_Text="";
		m_Text+="\r\n";
		m_Text+="設:";
		m_Text+="\r\n";
		m_Text+="  A=Sum[i=0 to p](A[i]*0x100000000**i)";
		m_Text+="\r\n";
		m_Text+="  B=Sum[i=0 to q](B[i]*0x100000000**i),p>=q";
		m_Text+="\r\n";
		m_Text+="  C=Sum[i=0 to n](C[i]*0x100000000**i)=A*B";
		m_Text+="\r\n";
		m_Text+="";
		m_Text+="\r\n";
		m_Text+="顯然:";
		m_Text+="\r\n";

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91浏览器入口在线观看| 99久久精品国产精品久久| 蜜臀av性久久久久av蜜臀妖精| 天天综合日日夜夜精品| 精品一区二区精品| 99久久免费国产| 欧美丰满高潮xxxx喷水动漫| 精品国产乱码久久| 亚洲视频 欧洲视频| 免费精品99久久国产综合精品| 日韩av电影免费观看高清完整版在线观看 | 国产日韩欧美高清在线| 国产日韩精品久久久| 国产精品免费aⅴ片在线观看| 亚洲天堂网中文字| 日韩精品乱码av一区二区| 国产精品亚洲午夜一区二区三区| 色婷婷精品大在线视频| 精品福利一二区| 一区二区三区中文字幕在线观看| 久久精品国产免费| 欧美综合在线视频| 久久九九99视频| 午夜久久久久久| 成人黄色一级视频| 久久男人中文字幕资源站| 一区二区成人在线| 成人在线视频一区| 91精品欧美综合在线观看最新| 中文字幕在线不卡一区| 美女久久久精品| 在线观看视频一区二区| 亚洲欧洲精品天堂一级| 国产在线精品免费| 日韩欧美国产午夜精品| 亚洲一区免费视频| 91麻豆6部合集magnet| 久久精品日韩一区二区三区| 免费在线观看不卡| 欧美日韩美少妇| 一区二区成人在线| 91成人免费网站| 亚洲欧洲日韩av| 成人动漫一区二区三区| 精品人在线二区三区| 久久99久久99精品免视看婷婷 | 日韩电影网1区2区| 欧美色图激情小说| 亚洲一区免费观看| 欧美亚洲一区三区| 夜夜亚洲天天久久| 欧美日韩亚洲不卡| 国产精品国产a级| 国产成人日日夜夜| 国产日韩亚洲欧美综合| 国产在线播放一区三区四| 精品国产sm最大网站免费看| 免费xxxx性欧美18vr| 欧美一二三区在线观看| 麻豆91在线播放免费| 日韩欧美卡一卡二| 美女视频网站黄色亚洲| 精品国产人成亚洲区| 国产呦萝稀缺另类资源| 国产亚洲一本大道中文在线| 国产成人精品一区二区三区网站观看| 欧美一区二区网站| 久久爱www久久做| 久久综合久久综合久久| 国产一区二区三区不卡在线观看| 久久久久久久久久久电影| 成人黄色777网| 日韩一区在线播放| 欧美三级电影精品| 日产国产欧美视频一区精品 | 久久精品夜色噜噜亚洲a∨| 国产精品亚洲一区二区三区妖精 | 欧美色精品在线视频| 午夜av一区二区| 精品久久久久香蕉网| 国产精品888| 亚洲精品国产a| 日韩视频免费观看高清完整版在线观看 | 亚洲免费看黄网站| 欧洲精品在线观看| 亚洲va欧美va天堂v国产综合| 欧美色图激情小说| 国内精品写真在线观看| 国产精品久久久久婷婷| 在线精品亚洲一区二区不卡| 蜜桃精品视频在线观看| 国产精品久久免费看| 欧美蜜桃一区二区三区| 久久国产精品免费| 久久青草国产手机看片福利盒子 | 欧美日韩国产影片| 国产一区二区精品久久99| 亚洲韩国精品一区| 久久综合成人精品亚洲另类欧美 | 91欧美激情一区二区三区成人| 日韩国产欧美视频| 国产精品久久久久久福利一牛影视| 欧美日韩一区二区在线视频| 国产成人精品免费在线| 亚洲妇熟xx妇色黄| 国产精品麻豆一区二区| 69成人精品免费视频| jlzzjlzz亚洲女人18| 美女国产一区二区三区| 亚洲激情av在线| 国产欧美一二三区| 精品福利二区三区| 欧美视频一二三区| 97超碰欧美中文字幕| 国产福利一区二区三区视频| 五月天亚洲精品| 尤物av一区二区| 国产精品青草久久| 久久久精品综合| 日韩精品一区二区三区四区视频 | 91麻豆国产在线观看| 国产成人精品综合在线观看 | av在线不卡电影| 国产精品一区二区三区网站| 无吗不卡中文字幕| 亚洲成人av在线电影| 伊人色综合久久天天| 国产精品美女视频| 国产日韩v精品一区二区| 欧美精彩视频一区二区三区| 亚洲欧美综合网| 性做久久久久久| 美腿丝袜一区二区三区| 国产精品亚洲综合一区在线观看| 成人av网在线| 欧美在线小视频| 欧美大片日本大片免费观看| 久久一区二区三区四区| 国产精品精品国产色婷婷| 一区二区三区日韩欧美精品| 天天色 色综合| 色女孩综合影院| 欧美精品粉嫩高潮一区二区| 精品精品国产高清一毛片一天堂| 国产欧美视频一区二区三区| 樱花影视一区二区| 精品亚洲aⅴ乱码一区二区三区| 成人夜色视频网站在线观看| 在线免费一区三区| 久久综合精品国产一区二区三区| **网站欧美大片在线观看| 日韩av在线播放中文字幕| 国产**成人网毛片九色 | 一区二区三区四区激情| 六月婷婷色综合| 色哟哟国产精品| 欧美第一区第二区| 亚洲激情五月婷婷| 激情亚洲综合在线| 色天使色偷偷av一区二区| 久久欧美一区二区| 三级欧美在线一区| 99九九99九九九视频精品| 日韩一区二区三区视频在线| 亚洲视频狠狠干| 国产精品77777竹菊影视小说| 欧美日韩精品一区二区三区蜜桃| 国产情人综合久久777777| 偷拍日韩校园综合在线| 99久久久精品| wwwwww.欧美系列| 图片区小说区区亚洲影院| 99久久er热在这里只有精品15| 亚洲精品在线观| 欧美aaaaaa午夜精品| 色偷偷成人一区二区三区91| 国产亚洲美州欧州综合国| 奇米888四色在线精品| 色94色欧美sute亚洲线路一ni| 国产午夜精品久久| 国产最新精品免费| 精品久久久久av影院| 日韩黄色免费电影| 欧美丰满一区二区免费视频 | 国产精品日韩成人| 久久国产精品99久久久久久老狼 | 在线视频综合导航| 国产精品久久久久久久久动漫| 黄色成人免费在线| 欧美va亚洲va| 久久国产婷婷国产香蕉| 91精品国产综合久久精品| 亚洲成av人片在线观看无码| 欧美最新大片在线看| 亚洲一区二区三区四区中文字幕| 色一情一乱一乱一91av| 亚洲情趣在线观看| 在线观看亚洲a| 亚洲18影院在线观看| 欧美一区中文字幕|