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

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

?? 數字簽名dlgbk.cpp

?? 本程序實現DSA數字簽名 是學習和研究密碼學的良好資源 歡迎下載
?? CPP
字號:
// 數字簽名Dlg.cpp : implementation file
//

#include "stdafx.h"
#include "數字簽名.h"
#include "數字簽名Dlg.h"
#include "BigInt.h"
#include "MD5.h"
#include "SHA1.h"

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

CBigInt sha(CBigInt y);
CBigInt pow2( const int x, int y);
CBigInt makerandnumber( unsigned int len);

/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About

class CAboutDlg : public CDialog
{
public:
	CAboutDlg();

// Dialog Data
	//{{AFX_DATA(CAboutDlg)
	enum { IDD = IDD_ABOUTBOX };
	//}}AFX_DATA

	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CAboutDlg)
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
	//}}AFX_VIRTUAL

// Implementation
protected:
	//{{AFX_MSG(CAboutDlg)
	virtual void OnOK();
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
	//{{AFX_DATA_INIT(CAboutDlg)
	//}}AFX_DATA_INIT
}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CAboutDlg)
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
	//{{AFX_MSG_MAP(CAboutDlg)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// DMyDlg dialog

DMyDlg::DMyDlg(CWnd* pParent /*=NULL*/)
	: CDialog(DMyDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(DMyDlg)
	m_P = _T("");
	m_Q = _T("");
//	m_D = _T("");		mpdified in 2007.6.10
	m_Len = 0;
	m_OUT = _T("");
	m_IN = _T("");
	ready = 0;
	m_file = _T("");
	m_string = _T("");
	//}}AFX_DATA_INIT
	// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void DMyDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(DMyDlg)
	DDX_Text(pDX, IDC_N, m_P);
	DDX_Text(pDX, IDC_E, m_Q);
//	DDX_Text(pDX, IDC_D, m_D);		mpdified in 2007.6.10
	DDX_CBIndex(pDX, IDC_COMBO, m_Len);
	DDX_Text(pDX, IDC_OUTPUT, m_OUT);
	DDX_Text(pDX, IDC_INPUT, m_IN);
	DDX_Text(pDX, IDC_EDITFILE, m_file);
	DDX_Text(pDX, IDC_STRING, m_string);
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(DMyDlg, CDialog)
	//{{AFX_MSG_MAP(DMyDlg)
	ON_WM_SYSCOMMAND()
	ON_WM_PAINT()
	ON_WM_QUERYDRAGICON()
	ON_BN_CLICKED(IDC_BUTTON_GET, OnButtonGet)
	ON_BN_CLICKED(IDC_ENCRYPT, OnEncrypt)
	ON_BN_CLICKED(IDC_DECRYPT, OnDecrypt)
	ON_BN_CLICKED(IDC_Btnfile, OnBtnfile)
	ON_EN_CHANGE(IDC_EDITFILE, OnChangeEditfile)
	ON_EN_CHANGE(IDC_STRING, OnChangeString)
	ON_BN_CLICKED(IDC_SHA1_RADIO, OnSha1Radio)
	ON_BN_CLICKED(IDC_MD5_RADIO, OnMd5Radio)
	ON_CBN_EDITCHANGE(IDC_COMBO, OnEditchangeCombo)
	ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// DMyDlg message handlers

BOOL DMyDlg::OnInitDialog()
{
	CDialog::OnInitDialog();

	// Add "About..." menu item to system menu.

	// IDM_ABOUTBOX must be in the system command range.
	ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
	ASSERT(IDM_ABOUTBOX < 0xF000);

	CMenu* pSysMenu = GetSystemMenu(FALSE);
	if (pSysMenu != NULL)
	{
		CString strAboutMenu;
		strAboutMenu.LoadString(IDS_ABOUTBOX);
		if (!strAboutMenu.IsEmpty())
		{
			pSysMenu->AppendMenu(MF_SEPARATOR);
			pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
		}
	}

	// Set the icon for this dialog.  The framework does this automatically
	//  when the application's main window is not a dialog
	SetIcon(m_hIcon, TRUE);			// Set big icon
	SetIcon(m_hIcon, FALSE);		// Set small icon
	
	// TODO: Add extra initialization here

	CheckRadioButton(IDC_MD5_RADIO,IDC_SHA1_RADIO,IDC_MD5_RADIO);
	UpdateData(FALSE);

	return TRUE;  // return TRUE  unless you set the focus to a control
}

void DMyDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
	if ((nID & 0xFFF0) == IDM_ABOUTBOX)
	{
		CAboutDlg dlgAbout;
		dlgAbout.DoModal();
	}
	else
	{
		CDialog::OnSysCommand(nID, lParam);
	}
}

// If you add a minimize button to your dialog, you will need the code below
//  to draw the icon.  For MFC applications using the document/view model,
//  this is automatically done for you by the framework.

void DMyDlg::OnPaint() 
{
	if (IsIconic())
	{
		CPaintDC dc(this); // device context for painting

		SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

		// Center icon in client rectangle
		int cxIcon = GetSystemMetrics(SM_CXICON);
		int cyIcon = GetSystemMetrics(SM_CYICON);
		CRect rect;
		GetClientRect(&rect);
		int x = (rect.Width() - cxIcon + 1) / 2;
		int y = (rect.Height() - cyIcon + 1) / 2;

		// Draw the icon
		dc.DrawIcon(x, y, m_hIcon);
	}
	else
	{
		CDialog::OnPaint();
	}
}

// The system calls this to obtain the cursor to display while the user drags
//  the minimized window.
HCURSOR DMyDlg::OnQueryDragIcon()
{
	return (HCURSOR) m_hIcon;
}

void DMyDlg::OnButtonGet() 
{
	// TODO: Add your control notification handler code here
	ready=1;
	UpdateData(TRUE);
    CTime t0=CTime::GetCurrentTime();
/*
	int len=8;  //int len=2; modified in 2007 6. 9
	for(int i=0;i<m_Len;i++){len*=2;}
	P.Mov(0);
	Q.Mov(0);
	N.Mov(0);
	E.Mov(0);
	P.GetPrime(len);
	Q.GetPrime(len);
	N.Mov(P.Mul(Q));
	N.Put(m_P);
	P.m_ulValue[0]--;
	Q.m_ulValue[0]--;
	P.Mov(P.Mul(Q));
	D.Mov(0x10001);		//mpdified in 2007.6.10
//	m_D="10001";		//mpdified in 2007.6.10
	E.Mov(D.Euc(P));
	E.Put(m_Q);
    CTime t1=CTime::GetCurrentTime();
    CTimeSpan t=t1-t0;
	m_OUT.Format("%d",t.GetTotalSeconds());
	m_OUT+=" 秒";
	Q.m_ulValue[0]=0;

*/

	int n=3,b,g=160,T=1,L;
	L=m_Len+1;
	CBigInt r,s,u,w,p,q,t;	
	CBigInt *v=new CBigInt [4*L];
	b=L*32-1;
	t.Mov(pow2(2,g));
	while (T)
	{
		s.Mov(makerandnumber(g));
//		r.Mov(s);
//		r.Mov(r.Add(1));
//		r.Mov(r.Mod(t));
//		u.Mov(sha(s));
		q.Mov(sha(s));
		q.m_ulValue[0]=q.m_ulValue[0]|0x1;
		q.m_ulValue[4*L]=q.m_ulValue[4*L]|0x80000000; 
		while (q.Rab()==0)  
			q.Mov(q.Add(2));
		int C=0,N=2;
		for (int k=0;k<4*L;k++)
		{
			v[k].Mov(s);
			v[k].Mov(v[k].Add(N+k));
			v[k].Mov(v[k].Mod(t));
			v[k].Mov(sha(v[k]));
		}
		w.Mov(0);
		r.Mov(1);
		for ( k=0;k<4*L-2;k++)
		{
			v[k].Mov(v[k].Mul(r));
			w.Mov(w.Add(v[k]));
			r.Mov(r.Mul(t));
		}
		s.Mov(pow2(2,b));
		v[k].Mov(v[k].Mod(s));
		v[k].Mov(v[k].Mul(r));
		w.Mov(w.Add(v[k]));
		r.Mov(w);
		r.Mov(r.Add(1));
		w.Mov(w.Mod(q));
		r.Mov(r.Sub(w));
		p.Mov(r);
		while (p.Rab()==0) 
		{
			C=C+1;
//			N=N+n+1;
//			if (C==4096) break;
			p.Mov(p.Add(q));
			p.Mov(p.Add(q));
		}
		if (C<4096)	break;
	}
	P.Mov(p);
	Q.Mov(q);
	P.Put(m_P);
	Q.Put(m_Q);
//	m_D="10001";
    CTime t1=CTime::GetCurrentTime();
    CTimeSpan t2=t1-t0;
	m_OUT.Format("%d",t2.GetTotalSeconds());
	m_OUT+=" 秒";
	UpdateData(FALSE);
}

void DMyDlg::OnEncrypt() 
{
	// TODO: Add your control notification handler code here
	if(ready==0)
	{
		m_OUT=_T("請先輸入或生成N、D、E");
        UpdateData(FALSE);
		return;
	}
	UpdateData(TRUE);
    if(m_IN.GetLength()>256)
	{
		m_OUT=_T("N不得大于256位");
		UpdateData(FALSE);
		return;
	}
/*	for(int i=0;i<m_IN.GetLength();i++)
	{
		if((m_IN[i]<'0')||
		   ((m_IN[i]>'9')&&(m_IN[i]<'A'))||
		   ((m_IN[i]>'F')&&(m_IN[i]<'a'))||
		   (m_IN[i]>'f'))
		{
			m_OUT=_T("待加密數據必須為0-9或A-F或a-f組成的整數");
			UpdateData(FALSE);
			return;
		}
	}*/
	P.Get(m_IN);
	if(P.Cmp(N)>=0)
	{
		m_OUT=_T("待加密數據必須小于N");
        UpdateData(FALSE);
		return;
	}
	Q.Mov(P.RsaTrans(E,N));
	Q.Put(m_OUT);
	UpdateData(FALSE);
}

void DMyDlg::OnDecrypt() 
{
	// TODO: Add your control notification handler code here
		if((ready==0)||(Q.m_ulValue[0]==0))
	{
		m_OUT=_T("請先進行數字簽名");
        UpdateData(FALSE);
		return;
	}
	Q.Get(m_OUT);
	P.Mov(Q.RsaTrans(D,N));
	P.Put(m_OUT);
	UpdateData(FALSE);
}

void DMyDlg::OnBtnfile() 
{
	// TODO: Add your control notification handler code here
	CFileDialog m_FileOpen(TRUE); 
//設置打開窗體的標題 
	m_FileOpen.m_ofn.lpstrTitle = _T("打開文件"); 
	m_FileOpen.m_ofn.lpstrFilter = _T("文件 (*.*)\0*.*\0\0"); 
//點擊瀏覽按鈕 
	if(IDOK == m_FileOpen.DoModal()) 
	{ 
	   //獲取打開的文件路徑 
	   CString m_FileName = m_FileOpen.GetPathName(); 
	   CEdit* pEdit = (CEdit*)(GetDlgItem(IDC_EDITFILE)); 
	   //將選擇的文件路徑名顯示到IDC_EDITFILE表識的EDIT中 
	   pEdit->SetWindowText(m_FileName); 
	} 
}

void byte2strhash(unsigned char *hash,int hashlen,unsigned char *out)
{
int i,x,y;

	for (i = 0;i < hashlen; i++)
	{
	y = hash[i] >> 4;			

	y += 0x30;
	if (y > 0x39) y+= 0x07;

	x = hash[i] & 0x0F;			
	
	x += 0x30;
	if (x > 0x39) x+= 0x07;

	out[i << 1] = y;			
	out[(i << 1)+1] = x;		
	}

	out[hashlen << 1] = 0x00;

}

void DMyDlg::OnChangeEditfile() 
{
	// TODO: If this is a RICHEDIT control, the control will not
	// send this notification unless you override the CDialog::OnInitDialog()
	// function and call CRichEditCtrl().SetEventMask()
	// with the ENM_CHANGE flag ORed into the mask.
	
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);   
    CString open=m_file;   
    MD5_CTX	md5_ctx;
    SHA1_CTX sha1_ctx;

	int hashradio;
 
	hashradio=GetCheckedRadioButton(IDC_MD5_RADIO,IDC_SHA1_RADIO);
	if(hashradio==IDC_MD5_RADIO)         //MD5
	{   
		int i;
		unsigned char digest[16],output[16];
		FILE* file;
        unsigned char buffer[16384];
	    MD5Init(&md5_ctx);
		file = fopen(open, "rb");
        i = fread(buffer, 1, 16384, file);
        MD5Update(&md5_ctx, buffer, i);
        MD5Final(digest, &md5_ctx);
        fclose(file);
		
		byte2strhash(digest,16,output);
		CString str(output);
		SetDlgItemText(IDC_INPUT,str);		
	}

	else           //SHA-1
	{
		int i;
		unsigned char digest[20],output[20];
		FILE* file;
        unsigned char buffer[16384];
	    SHA1Init(&sha1_ctx);
		file = fopen(open, "rb");
        i = fread(buffer, 1, 16384, file);
        SHA1Update(&sha1_ctx, buffer, i);
        SHA1Final(digest, &sha1_ctx);
        fclose(file);
		
		byte2strhash(digest,20,output);
		CString str(output);
		SetDlgItemText(IDC_INPUT,str);
	}
}

void DMyDlg::OnChangeString() 
{
	// TODO: If this is a RICHEDIT control, the control will not
	// send this notification unless you override the CDialog::OnInitDialog()
	// function and call CRichEditCtrl().SetEventMask()
	// with the ENM_CHANGE flag ORed into the mask.
	
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);     
    MD5_CTX	md5_ctx;
    SHA1_CTX sha1_ctx;

	int hashradio;
    
	hashradio=GetCheckedRadioButton(IDC_MD5_RADIO,IDC_SHA1_RADIO);
	if(hashradio==IDC_MD5_RADIO)         //MD5
	{
		unsigned char digest[16],output[16];

		UpdateData(TRUE);   
        CString context=m_string; 

        MD5Init(&md5_ctx);
		unsigned char *buf = (unsigned char*)context.GetBuffer(context.GetLength()); 
        MD5Update(&md5_ctx,buf, strlen(context));
        MD5Final(digest, &md5_ctx);
		context.ReleaseBuffer();

		byte2strhash(digest,16,output);
		CString str(output);
		SetDlgItemText(IDC_INPUT,str);

       }

	else       //SHA1
	{
		unsigned char digest[20],output[20];
		UpdateData(TRUE);   
        CString context=m_string; 

        SHA1Init(&sha1_ctx);
		unsigned char *buf = (unsigned char*)context.GetBuffer(context.GetLength()); 
        SHA1Update(&sha1_ctx,buf, strlen(context));
        SHA1Final(digest, &sha1_ctx);
		context.ReleaseBuffer();

		byte2strhash(digest,20,output);	
		CString str(output);
		SetDlgItemText(IDC_INPUT,str);
	}
}

void DMyDlg::OnSha1Radio() 
{
	// TODO: Add your control notification handler code here
	
}

void DMyDlg::OnMd5Radio() 
{
	// TODO: Add your control notification handler code here
	
}

void DMyDlg::OnEditchangeCombo() 
{
	// TODO: Add your control notification handler code here
	
}

void DMyDlg::OnButton1() 
{
	// TODO: Add your control notification handler code here
	CDialog::OnOK();
	
}

void CAboutDlg::OnOK() 
{
	// TODO: Add extra validation here	
	CDialog::OnOK();
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品欧美久久久| 中文字幕不卡的av| 成人动漫一区二区三区| 五月婷婷另类国产| 国产精品色婷婷久久58| 91精品国产综合久久福利| 国产成+人+日韩+欧美+亚洲| 视频一区视频二区中文| 亚洲少妇最新在线视频| 亚洲精品国产精华液| 日韩你懂的在线播放| 欧美体内she精高潮| a亚洲天堂av| 国产不卡在线视频| 久久国内精品视频| 午夜欧美在线一二页| 最新欧美精品一区二区三区| 久久夜色精品国产噜噜av| 欧美日韩国产首页在线观看| 一本一本大道香蕉久在线精品 | 国产一区二区三区最好精华液| 亚洲综合在线免费观看| 亚洲欧美视频在线观看| 国产精品久久久久久妇女6080 | 国产福利不卡视频| 另类综合日韩欧美亚洲| 亚洲成人av电影| 亚洲一区二区精品久久av| 亚洲久草在线视频| 亚洲欧美欧美一区二区三区| 国产精品久久午夜夜伦鲁鲁| 久久网这里都是精品| 日韩精品一区二区三区蜜臀 | 夜夜亚洲天天久久| 亚洲日韩欧美一区二区在线| 国产嫩草影院久久久久| 国产欧美精品一区| 国产精品久久久久影院色老大| 日本一区二区综合亚洲| 国产免费观看久久| 国产精品短视频| 中文字幕字幕中文在线中不卡视频| 欧美国产禁国产网站cc| 琪琪久久久久日韩精品| 日韩国产精品久久久| 日本亚洲免费观看| 久草中文综合在线| 国产精品亚洲综合一区在线观看| 国产99精品国产| fc2成人免费人成在线观看播放| www.99精品| 日本高清免费不卡视频| 欧美日韩亚洲丝袜制服| 正在播放一区二区| 日韩一区二区在线看| 精品国产乱码久久久久久夜甘婷婷| 欧美大片一区二区| 国产亚洲一区二区在线观看| 国产精品色婷婷久久58| 一区二区成人在线观看| 日欧美一区二区| 国产精品一区二区黑丝| 一本大道久久a久久综合| 欧美丰满高潮xxxx喷水动漫| 亚洲精品在线三区| 国产精品久久久久久久久免费樱桃| 综合久久综合久久| 五月综合激情网| 国产福利一区在线观看| 在线观看视频一区| 日韩午夜电影av| 国产精品网曝门| 亚洲国产成人高清精品| 国产一区视频在线看| 91美女蜜桃在线| 日韩一区二区免费在线观看| 国产午夜亚洲精品理论片色戒 | 99精品1区2区| 国产午夜精品一区二区三区视频| 亚洲欧美国产三级| 蜜乳av一区二区| 成人动漫精品一区二区| 91精品中文字幕一区二区三区| 久久久99久久| 亚洲电影激情视频网站| 国产aⅴ综合色| 欧美一区二区三区视频| 亚洲人妖av一区二区| 免费在线一区观看| 91色在线porny| 欧美精品一区在线观看| 亚洲一区在线免费观看| 国产伦精一区二区三区| 欧美日韩精品专区| 国产精品区一区二区三区| 日本aⅴ免费视频一区二区三区| 99国产精品久久久久久久久久| 日韩免费电影网站| 一二三区精品视频| 成人免费av网站| 日韩午夜在线播放| 亚洲成人久久影院| 99热在这里有精品免费| 精品国产乱子伦一区| 日韩av中文字幕一区二区| 91香蕉视频在线| 欧美国产丝袜视频| 久久不见久久见中文字幕免费| 欧美性受极品xxxx喷水| 最新欧美精品一区二区三区| 国产高清亚洲一区| 精品美女在线观看| 日本一区中文字幕| 精品视频在线免费| 亚洲日本va在线观看| 成人免费看黄yyy456| 2021中文字幕一区亚洲| 日韩专区一卡二卡| 欧美三级乱人伦电影| 亚洲一区在线视频| 91九色02白丝porn| 国产精品麻豆久久久| 国产精品系列在线播放| 精品久久久久久久久久久院品网 | 91亚洲永久精品| 国产精品无码永久免费888| 国产精品系列在线播放| 精品国产免费人成在线观看| 裸体一区二区三区| 日韩欧美视频一区| 青青草成人在线观看| 欧美一卡二卡在线观看| 婷婷国产v国产偷v亚洲高清| 欧美色视频在线| 五月开心婷婷久久| 91麻豆精品国产91久久久久久| 五月综合激情婷婷六月色窝| 一色桃子久久精品亚洲| av在线不卡免费看| 亚洲欧美一区二区在线观看| 99国产麻豆精品| 亚洲精品你懂的| 欧美午夜电影网| 午夜视频一区二区三区| 91精品欧美福利在线观看| 免费日本视频一区| 久久众筹精品私拍模特| 国产成人精品免费看| 国产精品不卡在线观看| 91日韩在线专区| 亚洲国产精品欧美一二99| 欧美精品粉嫩高潮一区二区| 免费av网站大全久久| 久久久精品人体av艺术| 不卡的电影网站| 亚洲国产毛片aaaaa无费看| 欧美一级在线视频| 国产一区二区三区电影在线观看| 国产精品久久久久久久裸模| 在线观看日韩一区| 精品综合久久久久久8888| 国产欧美精品日韩区二区麻豆天美 | 悠悠色在线精品| 日韩一级高清毛片| 国产成人一级电影| 一区二区三区四区视频精品免费 | 天天av天天翘天天综合网| 26uuu久久综合| 91亚洲精品久久久蜜桃| 日韩成人精品视频| 国产亚洲欧美在线| 在线观看日韩毛片| 国内精品在线播放| 亚洲欧美另类小说视频| 日韩欧美成人激情| 91蜜桃婷婷狠狠久久综合9色| 偷拍亚洲欧洲综合| 欧美国产日韩精品免费观看| 欧美伊人精品成人久久综合97 | 亚洲国产一区二区a毛片| 精品久久久久久久人人人人传媒 | 欧美日韩视频专区在线播放| 国产传媒欧美日韩成人| 亚洲成年人影院| 国产精品卡一卡二| 欧美一级高清大全免费观看| 99在线精品一区二区三区| 日日摸夜夜添夜夜添精品视频| 欧美国产在线观看| 欧美一区二区三区在线观看 | 国产精品中文有码| 性感美女极品91精品| 国产精品灌醉下药二区| 日韩一区二区在线观看视频| 色狠狠色狠狠综合| 国产成人在线视频网址| 奇米888四色在线精品| 亚洲激情在线激情| 国产午夜一区二区三区| 日韩欧美不卡一区|