- 1、本文档共3页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
信息安全基础试验
实验三 基于非对称密钥算法的加解密工具的实现
公钥加密技术,也非对称加密技术。1976年,Diffie W.和Hellman M.E.在他们的《密码学的新方向》一文中首先提出公钥密码的。RSA算法的提出真正使得互不相识的通信双方在一个不安全的信道上进行安全通信最终成为可能RSA算法的工作原理是选择两个大素数pq (这里的大素数是指长度至少达到上百二进制位的素数),计算n = pq,那么有Φ(n) = (p - 1)(q - 1)。其中Φ(n)为欧拉函数。选择一个整数e (1 e Φ(n)),满足gcd(e, Φ(n) = 1。求出满足ed ≡ 1 mod Φ(n)的d。这样得到RSA的公共密钥k = (n, e),私有密钥k’= d。对于明文m满足0 m n,) ,RSA算法的加密过程为:
,;
对于密文信息c,满足0 m n,其解密过程为:
解密算法: ;
【举例】 假设实体A选择素数p = ,q = ,计算Φ(n) = (p - 1)(q - 1) = 120。选择 = 7,用扩展的欧拉算法得到满足ed ≡ 1 mod Φ(n)的d。A的公钥对为,A的私钥为d。
然后B将c发送给A。
为了解密c,A计算。
三、实验环境
操作系统:Windows 2000/XP/2003或以上版本。
应用软件:VC++ 6.0或以上版本。
实验软件包:需要以实验一初等数论实验为基础
四、实验内容和任务
在掌握RSA算法的基础上,运用高级程序设计语言编程实现RSA算法,并通过具体运算测试函数的功能。表3-1给出实现RSA加解密算法 FindAPrime() 功能 产生随机素数 输入 无 输出 随机素数 函数 void GenKeyPair(unsigned long publicMod, unsigned long publicKey, unsigned long privateKey) 功能 产生公钥对(n, e)和私钥d 输入 存放publicKey、publicMod和privateKey的地址。 输出 publicKey(公钥e),publicMod(公钥n),privateKey(私钥d) 函数 void RSAEncrypt(unsigned long publicKey, unsigned long publicMod, unsigned long *output, unsigned long input) 功能 对明文用RSA算法加密 输入 publicKey(公钥e),publicMod(公钥n),input(明文),存放密文output的地址 输出 output (密文) 函数 void RSADecrypt(unsigned long privateKey, unsigned long *output, unsigned long input) 功能 对密文用RSA算法解密 输入 input (密文),privatekey (私钥d), 存放明文的地址 输出 output (明文) RSA算法函数的实现主要以实验一中的模指数运算、素性检测和求解乘法逆元这三个实验为基础。在进行本实验时,学生可尝试自行创建工程文件,并将在实验表3-1中函数功能需要的指数运算、素性检测和求解乘法逆元的相关CPP文件添加进创建的工程中。
RSA算法的界面实例如图3-1所示。用户可以从界面输入公钥(或者私钥)参数,也可以让系统自动生成公钥(或者私钥)参数。如果用户不提供公钥(或者私钥)参数,则默认由系统自动生成。在系统自动生成参数的情况下,输入明文,点击“RSA加密”按钮,自动产生公钥(n,e)和私钥d,并用公钥(n,e)加密明文产生密文。输入密文和私钥d,点击“RSA解密”按钮,产生明文。点击“清空”按钮,可清空输入,以便重新输入测试值。
图3-1 RSA演示界面
五、实验步骤
本实验的大致步骤如下:
安装好所需的操作系统和VC++6.0集成开发环境。
创建图形化的RSA工程,实现类似图3-1的RSA操作界面。
将已经完成的实验一的指数运算函数、素性检测函数和求解乘法逆元函数的CPP文件添加进本工程。如果还不熟悉VC++6.0的集成开发环境,请参考相关书籍熟悉其界面、窗口、常用调试命令等。
根据本实验指导书以及表3-1 RSA算法函数接口,完成RSA加解密工具的“RSA加密”、RSA解密和“清空”三个按钮的程序,实现各自的功能。
利用第六部分的测试用例,测试程序。如果不能得到正确结果,调试程序直至获得正确结果。
六、测试用例
【用例】输入明文字符串
文档评论(0)