2010安全与保密实验指导书(新).docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
2010安全与保密实验指导书(新)

实验指导一 密码体制的编程实现 一、实验要求和目的 (1)用VC++实现RSA加解密算法; (2)加深对RSA加解密算法的理解; 二、实验条件 (1)安装VC++开发环境; (2)熟悉RSA加解密算法的有关知识; 三、实验时间 2学时 四、实验内容和步骤 RSA加解密算法是公开密钥密码体制的一种加密算法,它不仅可以作为加密算法使用,而且可以作为数字签名和密钥分配与管理。在这种体制中,每个用户有两个密钥:加密密钥PK={e,n}和解秘密钥SK={d,n}。用户把加密密钥PK公开,使得系统中的任何其他用户都可以使用,而对解密密钥SK中的d则保密。 1. 实验的建立 (1)在Windows桌面上选择“开始”|“程序”|“Microsoft Visual Studio 6.0”|“Microsoft Visual C++6.0”命令,进入“Microsoft Visual C++6.0”系统界面。在“Microsoft Visual C++6.0”系统界面中,建立加解密项目并运行之,出现图1所示的程序界面; 图1 程序界面 (2)单击“求随机数N、E”按钮,获得N、D、E三个参数(或者直接输入N、D、E三个参数),得到图2所示的结果; 图2单击“求随机数N、E”按钮后的结果 (3)在第三个文本框中输入待加密的明文,然后单击“加密”按钮,密文出现在第四个文本框中,如图3所示; 图3得到密文 (4)单击“解密”按钮,恢复的明文出现在第四个文本框中,如图4所示; 图4得到明文 2. 重要源代码的说明 (1)选取参数D,求随机数N、E; void CRSADlg::OnButtonGet() { ready=1; UpdateData(TRUE); int len=2; for(int i=0;im_Len;i++){len*=2;} CTime t0=CTime::GetCurrentTime(); P.Mov(0); Q.Mov(0); N.Mov(0); E.Mov(0); P.GetPrime(len); //得到两个随机数 Q.GetPrime(len); N.Mov(P.Mul(Q)); //计算N=P*Q N.Put(m_N); P.m_ulValue[0]--; Q.m_ulValue[0]--; P.Mov(P.Mul(Q)); //P=(P-1)*(Q-1) D.Mov(0x10001); //解密密钥D为已知 m_D=10001; E.Mov(D.Euc(P)); //求与解密密钥D互质的E E.Put(m_E); CTime t1=CTime::GetCurrentTime(); CTimeSpan t=t1-t0; m_OUT.Format(%d,t.GetTotalSeconds()); m_OUT+= 秒; Q.m_ulValue[0]=0; UpdateData(FALSE);// TODO: Add your control notification handler code here } (2)“加密”按钮对应的程序代码; void CRSADlg::OnOK() { 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;im_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); } (3)“解密”按钮对应的程序代码; void CRSADlg::OnDecrypt() { if(

文档评论(0)

tanze0623 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档