- 浏览: 2042410 次
- 性别:
- 来自: 北京
-
文章分类
- 全部博客 (651)
- ACE (35)
- BAT (9)
- C/C++ (116)
- fast-cgi (14)
- COM (27)
- python (59)
- CGI (4)
- C# (2)
- VC (84)
- DataBase (29)
- Linux (96)
- P2P (6)
- PHP (15)
- Web (6)
- Memcached (7)
- IME输入法 (11)
- 设计模式 (2)
- 搜索引擎 (1)
- 个人情感 (4)
- 笔试/面试 (3)
- 一亩三分地 (33)
- 历史 (2)
- 地理 (1)
- 人物 (3)
- 经济 (0)
- 不仅仅是笑哦 (43)
- 小故事大道理 (2)
- http://www.bjdsmyysjk120.com/ (0)
- http://www.bjdsmyy120.com/ (0)
- 它山之石可以攻玉 (15)
- 大学生你关注些什么 (28)
- 数据恢复 (1)
最新评论
-
luokaichuang:
这个规范里还是没有让我明白当浏览器上传文件时,STDIN的消息 ...
FastCGI规范 -
effort_fan:
好文章!学习了,谢谢分享!
com技术简介 -
vcell:
有错误os.walk(strPath)返回的已经是全部的文件和 ...
通过python获取目录的大小 -
feifeigd:
feifeigd 写道注意:文章中的CPP示例第二行 #inc ...
ATL入门:利用ATL编写简单的COM组件 -
feifeigd:
注意:文章中的CPP示例第二行 #include " ...
ATL入门:利用ATL编写简单的COM组件
// RSADlg.h : header file
#if !defined(AFX_RSADLG_H__D491C4A6_0DE9_4430_BE31_2150D1C5E35F__INCLUDED_)
#define AFX_RSADLG_H__D491C4A6_0DE9_4430_BE31_2150D1C5E35F__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include <math.h>
/////////////////////////////////////////////////////////////////
// CRSADlg dialog
class CRSADlg : public CDialog
{
// Construction
public:
char CalculateModOfChar(double num1, double num2);
char CalculateModOfChar(const char cChar, double num,long *ps);
double calculatemod(double num1, double num2);
int primeNumber(long m);
CRSADlg(CWnd* pParent = NULL); // standard constructor
// Dialog Data
//{{AFX_DATA(CRSADlg)
enum { IDD = IDD_RSA_DIALOG };
CEdit m_OpenEdit;
CEdit m_CryptographEdit;
CEdit m_PriKeyEdit;
CEdit m_ResourceEdit;
CEdit m_Line;
CEdit m_Char;
long m_PubNEdit;
long m_PubXEdit;
long m_PrimeEdit1;
long m_PrimeEdit2;
long m_PubKeyEdit;
//}}AFX_DATA
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CRSADlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
HICON m_hIcon;
// Generated message map functions
//{{AFX_MSG(CRSADlg)
virtual BOOL OnInitDialog();
afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
afx_msg void OnCalculateButton();
afx_msg void OnPubkeyButton();
afx_msg void OnPrikeyButton();
afx_msg void OnChangeResourceEdit();
afx_msg void OnHidePrikeyButton();
afx_msg void OnShowPrikeyButton();
afx_msg void OnClearButton();
afx_msg void OnExitButton();
afx_msg void OnEncryptButton();
afx_msg void OnOpenButton();
afx_msg void OnEncryptTextButton();
afx_msg void OnOpenTextbutton();
afx_msg void OnCalculateMenu();
afx_msg void OnPubkeyMenu();
afx_msg void OnPrikeyMenu();
afx_msg void OnHideMenu();
afx_msg void OnShowMenu();
afx_msg void OnClearMenu();
afx_msg void OnExitMenu();
afx_msg void OnEncryptnumMenu();
afx_msg void OnOpennumMenu();
afx_msg void OnEncrypttextMenu();
afx_msg void OnOpentextMenu();
afx_msg void OnAboutMenu();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
private:
long lArrayOfCount[300]; //文本加密和解密过程中记数功能
};
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_RSADLG_H__D491C4A6_0DE9_4430_BE31_2150D1C5E35F__INCLUDED_)
1、void CRSADlg::OnCalculateButton() //计算按钮处理函数
{
UpdateData(TRUE);
int flag1,flag2;
flag1=primeNumber(m_PrimeEdit1);
flag2=primeNumber(m_PrimeEdit2);
if(flag1==1)
m_PrimeEdit1=m_PrimeEdit1;
else m_PrimeEdit1=0;
if(flag2==1)
m_PrimeEdit2=m_PrimeEdit2;
else m_PrimeEdit2=0;
m_PubNEdit=m_PrimeEdit1*m_PrimeEdit2;
m_PubXEdit=(m_PrimeEdit1-1)*(m_PrimeEdit2-1);
UpdateData(FALSE);
}
2、int CRSADlg::primeNumber(long m) //判断是否为素数
{
int flag=1;
long temp=(long)sqrt(m);
for(int i=2;i<=temp;i++)
{
if(m%i==0)
{
flag=0;
break;
}
}
if(flag==0) return 0;
else return 1;
}
3、void CRSADlg::OnPubkeyButton() //公有密钥按钮处理函数
{
UpdateData(TRUE);
if(primeNumber(m_PubKeyEdit)==0||m_PubXEdit%m_PubKeyEdit==0||m_PubKeyEdit>m_PubXEdit)
m_PubKeyEdit=0;
UpdateData(FALSE);
}
4、void CRSADlg::OnPrikeyButton()
{
UpdateData(TRUE);
double privatenum;
char cBuffer[32];
for(double i=1; ;i++)
{
double temp=fmod((i*m_PubXEdit+1),m_PubKeyEdit);
if(temp==0.0 && (i*m_PubXEdit+1)/m_PubKeyEdit<m_PubXEdit)
{
privatenum=(i*m_PubXEdit+1)/m_PubKeyEdit;
break;
}
}
sprintf(cBuffer,"%0.0f",privatenum);
m_PriKeyEdit.SetWindowText(cBuffer);
}
5、void CRSADlg::OnChangeResourceEdit()
{
CString METext;
char Count[10];
int nCharNum,nLineNum;
m_ResourceEdit.GetWindowText(METext);
nCharNum=METext.GetLength();
nLineNum=m_ResourceEdit.GetLineCount();
nCharNum-=(nLineNum-1);
itoa(nCharNum,Count,10);
m_Char.SetWindowText(Count);
itoa(nLineNum,Count,10);
m_Line.SetWindowText(Count);
}
6、void CRSADlg::OnHidePrikeyButton()
{
m_PriKeyEdit.ShowWindow(SW_HIDE);
}
8、void CRSADlg::OnExitButton()
{
OnOK();
}
9、void CRSADlg::OnOpenButton() //数字解密按钮处理函数
{
char sArray[20];
char Count[32];
double number1,number2;
double nPriKey;
m_PriKeyEdit.GetWindowText(sArray,20);
nPriKey=atof((LPCTSTR)sArray);
m_CryptographEdit.GetWindowText(sArray,20);
number1=atof((LPCTSTR)sArray);
number2=calculatemod(number1,nPriKey);
sprintf(Count,"%0.0f",number2);
m_OpenEdit.SetWindowText(Count);
}
10、double CRSADlg::calculatemod(double num1, double num2) //数字加密和解密算法
{ //求余处理函数
double mul=1.0;
for(long i=0;i<(long)num2;i++)
{
mul*=fmod(num1,m_PubNEdit);
mul=fmod(mul,m_PubNEdit);
}
mul=fmod(mul,m_PubNEdit);
return mul;
}
11、void CRSADlg::OnEncryptTextButton()
{
long *point=lArrayOfCount;
CString sArray;
int nCount;
m_Char.GetWindowText(sArray);
nCount=atoi(sArray);
char sResourceText[300];
char sCryptogramText[300];
char *pResourceText=sResourceText;
char *pCryptogramText=sCryptogramText;
m_ResourceEdit.GetWindowText(sResourceText,nCount+1);
for(int i=0;i<nCount;i++)
{
*pCryptogramText=CalculateModOfChar(*pResourceText,m_PubKeyEdit,point);//调用文本加密求余函
point++; //指向下个地址,准备记录下个数
pResourceText++;
pCryptogramText++;
}
*pCryptogramText[nCount]='\0';
m_CryptographEdit.SetWindowText(sCryptogramText);
}
12、void CRSADlg::OnOpenTextbutton()
{
long *point1=lArrayOfCount;
char sArray[10];
int nCount;
double fPriKey;
m_Char.GetWindowText(sArray,10);
nCount=atoi((LPCTSTR)sArray);
m_PriKeyEdit.GetWindowText(sArray,10);
fPriKey=atof((LPCTSTR)sArray);
char sOpenText[300];
char sCryptogramText[300];
char *pOpenText=sOpenText;
char *pCryptogramText=sCryptogramText;
m_CryptographEdit.GetWindowText(sCryptogramText,300);
double tempnumber;
for(int i=0;i<nCount;i++)
{
tempnumber=(*point1)*128+*pCryptogramText;
*pOpenText=CalculateModOfChar(tempnumber,fPriKey); //调用文本解密求余函数,得到解密字符
point1++; //指向记录下个数字
pCryptogramText++;
pOpenText++;
}
*pOpenText[nCount]='\0';
m_OpenEdit.SetWindowText(sOpenText);
}
13、char CRSADlg::CalculateModOfChar(const char cChar, double num,long *ps)
{ //文本加密算法求余处理函数
double mul=1;
for(long i=0;i<num;i++)
{
mul*=fmod((double)cChar,m_PubNEdit);
mul=fmod(mul,m_PubNEdit);
}
*ps=(long)mul/128;
return (char)fmod(mul,128);
}
14、char CRSADlg::CalculateModOfChar(double num1, double num2)
{ //文本函数解密处理函数
double mul=1;
for(long i=0;i<num2;i++)
{
mul*=fmod(num1,m_PubNEdit);
mul=fmod(mul,m_PubNEdit);
}
return (char)mul;
}
15、void CRSADlg::OnCalculateMenu()
{
OnCalculateButton();
}
16、void CRSADlg::OnPubkeyMenu()
{
OnPubkeyButton();
}
17、void CRSADlg::OnPrikeyMenu()
{
OnPrikeyButton();
}
18、void CRSADlg::OnHideMenu()
{
OnHidePrikeyButton();
}
19、void CRSADlg::OnShowMenu()
{
OnShowPrikeyButton();
}
20、void CRSADlg::OnClearMenu()
{
OnClearButton();
}
21、void CRSADlg::OnExitMenu()
{
OnExitButton();
}
22、void CRSADlg::OnEncryptnumMenu()
{
OnEncryptButton();
}
23、void CRSADlg::OnOpennumMenu()
{
OnOpenButton();
}
24、void CRSADlg::OnEncrypttextMenu()
{
OnEncryptTextButton();
}
25、void CRSADlg::OnOpentextMenu()
{
OnOpenTextbutton();
}
26、void CRSADlg::OnAboutMenu()
{
MessageBox("卖石头创作 QQ:170758887\n\nRSA V1.0 版权所有 (C) 2006\n\nEmail:zero_dian@163.com\n\n\n");
}
27、void CRSADlg::OnEncryptButton() //数字加密按钮处理函数
{
char sArray[20];
char Count[32];
double number1,number2;
m_ResourceEdit.GetWindowText(sArray,20);
number1=atof((LPCTSTR)sArray);
number2=calculatemod(number1,m_PubKeyEdit);
//itoa(number2,Count,10);
sprintf(Count,"%0.0f",number2);
m_CryptographEdit.SetWindowText(Count);
}
28、void CRSADlg::OnShowPrikeyButton()
{
m_PriKeyEdit.ShowWindow(SW_SHOW);
}
29、void CRSADlg::OnClearButton()
{
m_ResourceEdit.SetSel(0,-1);
m_ResourceEdit.ReplaceSel("");
m_PriKeyEdit.SetSel(0,-1);
m_PriKeyEdit.ReplaceSel("");
m_CryptographEdit.SetSel(0,-1);
m_CryptographEdit.ReplaceSel("");
m_OpenEdit.SetSel(0,-1);
m_OpenEdit.ReplaceSel("");
UpdateData(FALSE);
}
发表评论
-
内存卡读不出来怎么办
2015-05-21 17:04 1394内存卡在生活中使用广泛,应用于手机作为扩展内存很普遍 ... -
对UTF8编码的初步认识
2011-06-07 15:10 1723在网络中有很多地方都有采用UTF8编码,由于要编写与邮件服务端 ... -
怎样煮小米粥?
2011-03-22 08:14 1822小米粥是健康食品,可单独煮熬,亦可添加大枣、红豆、红薯 ... -
如何清除svn保存的username用户名和paasword密码(windows和linux)
2010-12-23 15:33 2457windows下 方法1:对于TortoiseSVN软件 ... -
svn命令
2010-12-23 13:48 4757The Subversion Command-Line Cl ... -
Google Chrome 的内核引擎 WebKit 介绍
2010-06-28 10:22 2798Google Chrome 的内核引擎 WebKit ... -
I love you
2010-06-25 22:23 923让电脑替你说"I IOVE YOU":新建一个记事本,在里面输 ... -
for test zip file
2010-04-28 11:09 965for test zip file load -
FastCGI中文参考手册
2010-04-09 11:14 1159FastCGI中文参考手册 主题 FastCGI中文参考 ... -
详细设计说明书
2010-03-30 10:13 1271详细设计说明书 http://www.chinauni ... -
概要设计文档编写规范
2010-03-22 11:16 3367概要设计文档编写规 ... -
概要设计说明书
2010-03-22 11:13 2572概要设计说明书 一. 引言 1. ... -
Chrome的进程间通信(五)
2010-03-15 14:43 2988Chrome的进程间通信(五) 1. NPAPI ... -
Chrome的进程间通信(四)
2010-03-15 14:41 2065Chrome的进程间通信(四) 1. Chrome的窗口 ... -
Chrome的进程间通信(三)
2010-03-15 14:39 2220Chrome的进程间通信(三) 1. 基本的进程结构 ... -
Chrome的进程间通信(二)
2010-03-15 14:36 2007Chrome的进程间通信(二) 1. Chrome进程通 ... -
Chrome的多线程模型 (一)
2010-03-15 14:29 2815Chrome的多线程模型(一) ... -
Chrome源码剖析 序
2010-03-15 14:27 1891Chrome源码剖析 序 开源是口好东西,它让这个充斥 ... -
编码人员的误区
2009-09-10 16:22 970编码人员的误区 误区一:因为任务紧迫,所以没有时 ... -
软件军军规
2009-09-09 11:37 1043编码人员的误区 误区一:因为任务紧迫,所以没有时间想 有些人认 ...
相关推荐
RSA算法是一种非对称加密算法,由Ron Rivest、...总之,通过VC++实现RSA加密解密,可以有效地保护敏感信息,确保数据安全。在实际应用中,还需要注意与网络传输、文件存储等相关安全策略的结合,以构建完整的安全体系。
RSA算法是一种非对称加密算法,它在...总之,这个项目提供了一个直观的RSA加密解密实践,帮助用户理解和应用RSA算法。通过实际操作,你可以更深入地了解非对称加密的工作机制,这对于学习网络安全和密码学非常有帮助。
总的来说,这个“rsa.rar”压缩包提供了一种用C语言在VC环境下实现RSA加密和解密算法的资源。学习和理解这段代码,不仅可以加深对RSA算法的理解,也能掌握如何在实际项目中运用这种强大的加密技术。
RSA加密解密算法是一种非对称加密算法,由Ron Rivest、Adi Shamir和Leonard Adleman在1977年提出,是目前应用最广泛的公钥加密技术之一。该算法基于大数因子分解的困难性,即在两个大素数已知的情况下容易计算它们的...
C++实现RSA加密 在这里,我们将详细介绍C++实现RSA加密的知识点。 标题分析 该标题表明了这个项目的主要内容是使用...该项目提供了一个简单易用的RSA加密实现,基于C++语言和大数运算,可以在各种C++开发环境下使用。
RSA算法是一种非对称加密...总的来说,这个压缩包提供了一套完整的RSA加密解密解决方案,涵盖了理论知识、C语言实现以及用户交互的界面设计。对于学习RSA算法和实践加密应用的开发者来说,这是一个非常有价值的资源。
通过这个VC实现的RSA加密项目,我们可以学习到如何在实际编程环境中应用非对称加密技术,这对于理解和提高信息安全技能非常有帮助。同时,这也是一个很好的练习,能够加深对数论和大数计算的理解。
以下是实现RSA加密解密的基本步骤: 1. **生成密钥对**:选择大素数p和q,计算n=p*q和φ(n),然后使用扩展欧几里得算法找到e和d。 2. **加密**:将明文转换为大整数,然后使用公钥(e, n)进行加密。 3. **解密**:...
总的来说,RSA加密解密与签名验证是现代密码学的基础,通过VC6.0和MFC实现这一功能,可以帮助开发者更好地理解和应用这一重要技术。在这个项目中,你需要理解RSA算法的数学原理,熟悉MFC编程,以及如何集成加密库,...
本文将深入探讨一个基于VC(Visual C++)的RAS(Rivest-Shamir-Adleman)加密算法的实例,帮助读者理解加密解密的基本原理及其实际应用。 RAS加密算法,又称为RSA算法,是公钥密码体制的经典代表,由Ron Rivest、...
这个工程可能包含了实现RSA算法的源代码,用于演示如何在Windows平台上运用RSA加密和解密技术。 RSA加密的过程如下: 1. 选择两个大素数p和q,计算它们的乘积n=p*q。 2. 计算欧拉函数φ(n)=(p-1)*(q-1),它决定了...
总之,这个项目利用VC++实现了RSA加密算法,涉及了非对称加密的核心原理,以及在Windows开发环境下的编程实践。通过对这些源代码的学习,可以深入理解RSA算法的实现细节以及在实际软件开发中的应用。
软件思路:加密密钥和解密密钥的生成过程: ① 选取两个足够大的质数P和Q; ② 计算P和Q相乘所产生的乘积n=P*Q; ③ 找出一个小于n的数e,使其符合与(P-1)*(Q-1)互为质数; ④ 另找一个数d,使其满足(e*d) mod [(P-1)...
可以自动生成加密解密密钥,用于计算。随意选择两个大的质数p和q,p不等于q,计算N=pq。 根据欧拉函数,不大于N且与N互质的整数个数为(p-1)(q-1) 选择一个整数e与(p-1)(q-1)互质,并且e小于(p-1)(q-1) 用以下...
在描述中提到的"VC实现RSA加密,在MFC下运行实现,可用于PGP加密部分",这表明我们讨论的是如何在Visual C++环境下用MFC来实现RSA加密,并且这个实现可能被用于PGP(Pretty Good Privacy)加密工具的一部分。...
**RSA加密解密之Linux C语言版** RSA(Rivest-Shamir-Adleman...总的来说,了解并掌握RSA加密解密的原理和C语言实现,以及如何在Linux环境下进行移植和优化,对于任何IT专业人员来说,都是增强其技术能力的重要一步。
基于VC6.0下的C语言实现的RSA加解密文本文档,随机产生大素数密钥。有自己的大素数运算库。
总之,"MFC vc6.0 RSA DES MD5 加密解密算法"是一个涉及非对称加密、对称加密以及消息摘要的综合应用,开发者需要理解这些算法的原理,并在MFC环境中实现它们,以保证数据的安全传输和存储。通过图形化界面,使得...
在VC6环境中,实现DES和RSA加密算法,你需要了解C++编程基础,包括类的设计、内存管理和函数调用。同时,你需要掌握加密库,如Crypto++或OpenSSL,这些库提供了实现这些算法的接口。在源代码中,你可能会看到以下...
采用RSA加解密算法,通过 mfc图形化界面操作, 动态加解密 txt 文件里面的内容 加密过程中不会覆盖原始数据,会同时生成两个文件,一个是密码, 一个是 加密数据 解密的时候 会用到那两个文件