收藏 分销(赏)

RSA算法C语言实现-实验报告.doc

上传人:精*** 文档编号:1203058 上传时间:2024-04-18 格式:DOC 页数:4 大小:70.07KB 下载积分:5 金币
下载 相关 举报
RSA算法C语言实现-实验报告.doc_第1页
第1页 / 共4页
RSA算法C语言实现-实验报告.doc_第2页
第2页 / 共4页


点击查看更多>>
资源描述
广州大学学生实验报告 开课学院及实验室: 年 月 日 学院 年级、专业、班 姓名 学号 实验课程名称 成绩 实验项目名称 实验4 非对称密码算法实验 指导老师 实验目的 掌握产生RSA密钥对的程序设计方法 掌握产生RSA加密/解密的程序设计方法 实验内容 编写函数求出1~65535之间的全部素数 取8-bit的两个素数 p,q,并用来生成一对RSA密钥 编写RSA加密/解密程序(可以限制N为16-bit,并利用上述的p,q) 加密 你的学号+姓名 并随后解密 实验步骤 【RSA算法流程】 加密: 1、取8-bit的两个素数 p,q,并用来生成一对RSA密钥 2、根据欧拉函数,求得r=(p-1)(q-1) 3、选择一个小于r的整数e,求得e关于模r的模反元素,命名为d。(模反元素存在,当且仅当e与r互质) 4、(N,e)是公钥,(N,d)是私钥。Alice将她的公钥(N,e)传给Bob,而将她的私钥(N,d)藏起来。 5、利用公式将n加密为c,公式:,其中e为公钥 解密:利用公式将c加密为n ,公式:,其中d为私钥 RSA算法的C代码实现 1、 判断是否为素数 2、 随机产生素数p,q,最大为8bit 3、 产生公钥e(根据欧拉函数r,从2开始遍历寻找符合条件的e,直到int变量溢出) 4、 产生私钥d(从1开始遍历符合条件的d,直到变量溢出) 5、实现加解密公式的代码(a是加解密文本,b为公钥或私钥,c为N=pq) 运行结果截屏: 实验中遇到的问题与解决方法: 1、 p,q值过大,导致加密后数据溢出(将获得的p,q的结果mod 254后加1) 2、 加密后的数据用char类型存储溢出 (char类型太小,改用int或更大的数据类型存储加密结果更好) 3、 cin遇到空格直接返回结果,没有获取空格后的字符串,无法一次读取学号+空格+姓名 (改用gets函数) 4、 scanf函数与gets函数冲突 (这是因为二者使用的结束标记不同。输入字符串时,scanf()或cin>>遇到空格、回车、Tab结束,但在缓冲区中还留着这些结束符,此后如果使用gets()想去获取下一行字符串,它碰到的却是前面遗留下来的回车(或者回车之前还有空格等空白符),那么这次gets()就直接失效了,解决方法:用一句 while(getchar()!='\n'); 来处理掉缓冲区里的回车换行符,或者改用cin函数) 5、 p,q值过小,导致N过小,加密后的字符无法被解密还原为原文 (这是因为公式mod N,结果的范围从0~N-1,所以假如N小于原文的值则解密将出错,解决方法为扩大p,q取值,所以p,q按课件的要求取8bit范围的数可能会出错,范围要扩大到涵盖原文取值,建议取值为逼近8bit的素数) 实验总结:略
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 应用文书 > 报告/总结

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服