版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、目录1课程设计简介21.1 课程设计的目的21.2 课程设计内容22课程设计的整体实现过程22.1 流程分析22.2算法实现代码42.3测试与评价183心得体会204参考文献211课程设计简介1.1 课程设计的目的在数据加密解密算法中,rsa是典型的双密钥体制,目前均在大量使用。通过实验,让我们充分理解和掌握rsa算法的使用。这种加密算法的特点主要是密钥的变化, rsa同时有两把钥匙,公钥与私钥。同时支持数字签名。数字签名的意义在于,对传输过来的数据进行校验。确保数据在传输工程中不被修改。1.2 课程设计内容我们一组设计一个使用rsa算法进行加密解密的系统。并设计操作界面,对输入的明文可以进行
2、加解密以及对指定的文件可以加解密。2课程设计的整体实现过程2.1 流程分析甲方构建密钥对,将公钥公布给乙方,将私钥保留。 甲方使用私钥加密数据,然后用私钥对加密后的数据签名,发送给乙方签名以及加密后的数据;乙方使用公钥、签名来验证待解密数据是否有效,如果有效使用公钥对数据解密。 乙方使用公钥加密数据,向甲方发送经过加密后的数据;甲方获得加密数据,通过私钥解密。2.2算法实现代码package rsa;import java.awt.*;import java.awt.event.*;import java.util.*;/定义对话框类class rsa_dialog extends dialo
3、g implements actionlistener int message; panel panel_dialog;button button_queding;label label_jinggao;rsa_dialog(frame f,string s,boolean b,string jinggao)super(f,s,b);panel_dialog=new panel(); panel_dialog.setlayout(null);label_jinggao=new label(jinggao);panel_dialog.add(label_jinggao);label_jingga
4、o.setbounds(2, 2, 145, 40);button_queding=new button(确定);panel_dialog.add(button_queding);button_queding.setbounds(150/2-80/2,44,80,30);button_queding.addactionlistener(this);add(panel_dialog);toolkit tool=gettoolkit();dimension dim=tool.getscreensize();setbounds(dim.width/2-120/2,dim.height/2-150/2
5、,150,120);addwindowlistener(new windowadapter( )public void windowclosing(windowevent e)message=-1;setvisible(false););public void actionperformed(actionevent e)if(e.getsource()=button_queding)message=1;setvisible(false);class windowarea extends frame implements actionlistener/定义对话框rsa_dialog dialog
6、_p,dialog_q,dialog_mingwen_n;/定义选择素数p、qstring string_p,string_q;long long_p,long_q;panel panel_p_q;textfield textfield_p,textfield_q;label label_p,label_q;/定义o(n)nca-ios(799054470);string string_on,string_n;long long_on,long_n;panel panel_on_n;textfield textfield_on,textfield_n;label label_on,label_
7、n;button button_on,button_n;/定义可选择的整数epanel panel_kexuan_e;label label_kexuan_e;textarea textarea_kexuan_e;button button_e;/定义选择epanel panel_xuanze_e;label label_xuanze_e;textfield textfield_xuanze_e;/定义dstring string_e,string_d;long long_e,long_d;panel panel_d;label label_d;textfield textfield_d;bu
8、tton button_d;/定义公钥panel panel_gongyao;label label_gongyao_e,label_gongyao_n;textfield textfield_gongyao_e,textfield_gongyao_n;button button_gongyao;/定义私钥panel panel_siyao;label label_siyao_d,label_siyao_n;textfield textfield_siyao_d,textfield_siyao_n;button button_siyao;/定义加密long long_jiami_mingwen
9、,long_jiami_miwen;string string_jiami_mingwen,string_jiami_miwen;panel panel_jiami;textfield textfield_jiami_mingwen,textfield_jiami_miwen;label label_jiami_mingwen,label_jiami_miwen;button button_jiami;/定义解密long long_jiemi_mingwen,long_jiemi_miwen;string string_jiemi_mingwen,string_jiemi_miwen;pane
10、l panel_jiemi;textfield textfield_jiemi_mingwen,textfield_jiemi_miwen;label label_jiemi_mingwen,label_jiemi_miwen;button button_jiemi;windowarea(string s)super(s);setlayout(null);addwindowlistener(new windowadapter()public void windowclosing(windowevent e)system.exit(0););/框架选择素数p、qpanel_p_q=new pan
11、el();panel_p_q.setbounds(30,50,700,50);panel_p_q.setlayout(null);label_p=new label(选择素数p:);panel_p_q.add(label_p);label_p.setbounds(10, 10, 150, 20);textfield_q=new textfield();panel_p_q.add(textfield_q);textfield_q.setbounds(160,10,75,20);label_q=new label( 选择素数q:);panel_p_q.add(label_q);label_q.se
12、tbounds(245,10,150,20);textfield_p=new textfield();panel_p_q.add(textfield_p);textfield_p.setbounds(405,10,75,20);add(panel_p_q);/框架生成o(n)npanel_on_n=new panel();panel_on_n.setbounds(30,90,700,70);panel_on_n.setlayout(null);label_on=new label(o(n):);panel_on_n.add(label_on);label_on.setbounds(10,10,
13、100,20);textfield_on=new textfield();textfield_on.seteditable(false);panel_on_n.add(textfield_on);textfield_on.setbounds(160,10,75,20);button_on=new button(生成o(n));button_on.addactionlistener(this);panel_on_n.add(button_on);button_on.setbounds(488,10,110,20);label_n=new label(n:);panel_on_n.add(labe
14、l_n);label_n.setbounds(10,40,150,20);textfield_n=new textfield();textfield_n.seteditable(false);panel_on_n.add(textfield_n);textfield_n.setbounds(160,40,75,20);button_n=new button(生成n);button_n.addactionlistener(this);panel_on_n.add(button_n);button_n.setbounds(488,40,110,20);add(panel_on_n);/框架可选择的
15、epanel_kexuan_e=new panel();panel_kexuan_e.setbounds(30,160,700,100);panel_kexuan_e.setlayout(null);label_kexuan_e=new label(可供选择的e有:);/label_kexuan_e.setbackground(color.cyan);panel_kexuan_e.add(label_kexuan_e);label_kexuan_e.setbounds(10,10,150,20);textarea_kexuan_e=new textarea();textarea_kexuan_
16、e.seteditable(false);panel_kexuan_e.add(textarea_kexuan_e);textarea_kexuan_e.setbounds(160,10,250,80);button_e=new button(生成可供选择的e);button_e.addactionlistener(this);panel_kexuan_e.add(button_e);button_e.setbounds(488,10,110,20);add(panel_kexuan_e);/框架选择epanel_xuanze_e=new panel();panel_xuanze_e.setb
17、ounds(30,260,700,40);/panel_xuanze_e.setbackground(color.blue);panel_xuanze_e.setlayout(null);label_xuanze_e=new label(选择e为:);panel_xuanze_e.add(label_xuanze_e);label_xuanze_e.setbounds(10,10,150,20);textfield_xuanze_e=new textfield();panel_xuanze_e.add(textfield_xuanze_e);textfield_xuanze_e.setboun
18、ds(160,10,75,20);add(panel_xuanze_e);/框架dpanel_d=new panel();panel_d.setbounds(30,310,700,40);panel_d.setlayout(null);label_d=new label( d为:);panel_d.add(label_d);label_d.setbounds(10,10,150,20);textfield_d=new textfield();textfield_d.seteditable(false);panel_d.add(textfield_d);textfield_d.setbounds
19、(160,10,75,20);button_d=new button(生成d);button_d.addactionlistener(this);panel_d.add(button_d);button_d.setbounds(488,10,110,20);add(panel_d);/框架生成公钥kupanel_gongyao=new panel();panel_gongyao.setbounds(30,360,700,40);panel_gongyao.setlayout(null);label_gongyao_e=new label(公钥ku为:e);panel_gongyao.add(l
20、abel_gongyao_e);label_gongyao_e.setbounds(10,10,150,20);textfield_gongyao_e=new textfield();textfield_gongyao_e.seteditable(false);panel_gongyao.add(textfield_gongyao_e);textfield_gongyao_e.setbounds(160,10,75,20);label_gongyao_n=new label( n:);panel_gongyao.add(label_gongyao_n);label_gongyao_n.setb
21、ounds(238,10,35,20);textfield_gongyao_n=new textfield();textfield_gongyao_n.seteditable(false);panel_gongyao.add(textfield_gongyao_n);textfield_gongyao_n.setbounds(280,10,95,20);button_gongyao=new button(生成公钥ku);button_gongyao.addactionlistener(this);panel_gongyao.add(button_gongyao);button_gongyao.
22、setbounds(488,10,110,20);add(panel_gongyao);/框架生成私钥kupanel_siyao=new panel();panel_siyao.setbounds(30,410,700,40);panel_siyao.setlayout(null);label_siyao_d=new label(私钥kr为:d);panel_siyao.add(label_siyao_d);label_siyao_d.setbounds(10,10,150,20);textfield_siyao_d=new textfield();textfield_siyao_d.sete
23、ditable(false);panel_siyao.add(textfield_siyao_d);textfield_siyao_d.setbounds(160,10,75,20);label_siyao_n=new label( n:);panel_siyao.add(label_siyao_n);label_siyao_n.setbounds(238,10,35,20);textfield_siyao_n=new textfield();textfield_siyao_n.seteditable(false);panel_siyao.add(textfield_siyao_n);text
24、field_siyao_n.setbounds(280,10,95,20);button_siyao=new button(生成私钥kr);button_siyao.addactionlistener(this);panel_siyao.add(button_siyao);button_siyao.setbounds(488,10,110,20);add(panel_siyao);/框架加密panel_jiami=new panel();panel_jiami.setbounds(30,460,700,70);panel_jiami.setlayout(null);label_jiami_mi
25、ngwen=new label(输入明文:);panel_jiami.add(label_jiami_mingwen);label_jiami_mingwen.setbounds(30,10,75,20);textfield_jiami_mingwen=new textfield();panel_jiami.add(textfield_jiami_mingwen);textfield_jiami_mingwen.setbounds(160,10,215,20);label_jiami_miwen=new label(输出密文:);panel_jiami.add(label_jiami_miwe
26、n);label_jiami_miwen.setbounds(30,40,75,20);textfield_jiami_miwen=new textfield();textfield_jiami_miwen.seteditable(false);panel_jiami.add(textfield_jiami_miwen);textfield_jiami_miwen.setbounds(160,40,215,20);button_jiami=new button(加 密);button_jiami.addactionlistener(this);panel_jiami.add(button_ji
27、ami);button_jiami.setbounds(488,10,110,20);add(panel_jiami);/框架解密panel_jiemi=new panel();panel_jiemi.setbounds(30,540,700,70);panel_jiemi.setlayout(null);label_jiemi_mingwen=new label(输出明文:);panel_jiemi.add(label_jiemi_mingwen);label_jiemi_mingwen.setbounds(30,10,75,20);textfield_jiemi_mingwen=new t
28、extfield();textfield_jiemi_mingwen.seteditable(false);panel_jiemi.add(textfield_jiemi_mingwen);textfield_jiemi_mingwen.setbounds(160,10,215,20);label_jiemi_miwen=new label(输入密文:);panel_jiemi.add(label_jiemi_miwen);label_jiemi_miwen.setbounds(30,40,75,20);textfield_jiemi_miwen=new textfield();panel_j
29、iemi.add(textfield_jiemi_miwen);textfield_jiemi_miwen.setbounds(160,40,215,20);button_jiemi=new button(解 密);button_jiemi.addactionlistener(this);panel_jiemi.add(button_jiemi);button_jiemi.setbounds(488,10,110,20);add(panel_jiemi);/总的外框架尺寸toolkit tool=gettoolkit();dimension dim=tool.getscreensize();s
30、etbounds(dim.width/2-700/2,dim.height/2-620/2,700,620);setvisible(true);validate();public int panduan_sushu(long n)long i;for(i=2;in/2;i+)if(n%i=0)return 0;return 1;public void actionperformed(actionevent e)string string_lingshi_e; / 生成o(n)if(e.getsource()=button_on)string_p=textfield_p.gettext();lo
31、ng_p=integer.parseint(string_p);if(panduan_sushu(long_p)=0)dialog_p=new rsa_dialog(this,警告!!,true, q必须为素数);dialog_p.setvisible(true);string_q=textfield_q.gettext();long_q=integer.parseint(string_q);if(panduan_sushu(long_q)=0)dialog_q=new rsa_dialog(this,警告!!,true, p必须为素数);dialog_q.setvisible(true);l
32、ong_on=(long_p-1)*(long_q-1);string_on=long.tostring(long_on);textfield_on.settext(string_on); /生成nif(e.getsource()=button_n)string_p=textfield_p.gettext();long_p=integer.parseint(string_p);if(panduan_sushu(long_p)=0)dialog_p=new rsa_dialog(this,警告!!,true, q必须为素数);dialog_p.setvisible(true);string_q=
33、textfield_q.gettext();long_q=integer.parseint(string_q);if(panduan_sushu(long_q)=0)dialog_q=new rsa_dialog(this,警告!!,true, p必须为素数);dialog_q.setvisible(true);long_n=(long_p)*(long_q);string_n=long.tostring(long_n);textfield_n.settext(string_n); /生成可供选择的eif(e.getsource()=button_e)string string_e;long
34、long_lingshi_e,counter=0;for(long_lingshi_e=2;long_lingshi_elong_on;long_lingshi_e+)for(int i=2;ilong_n)dialog_mingwen_n=new rsa_dialog(this,警告!!,true, 明文必须小于n!);dialog_mingwen_n.setvisible(true);long lingshibl=long_jiami_mingwen;for(int i=1;ilong_n)lingshibl%=long_n;long_jiami_miwen=lingshibl;string_jiami_miwen=long.t
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年城市公共交通智能调度系统合同
- 2024年城市旧住宅出售合同
- 2024年别墅豪华装修合同
- 2024年员工离职内退合同
- 2024年夫妻双方离婚后公司管理权转移合同
- 2024年城市交通规划咨询服务合同
- 2024年个人用于购房购车借款合同模板
- 2024年乡村别墅租赁合同
- 2024年城市建设项目劳务分包合同
- 2024年大数据中心建设与运营合同
- 国开2024年秋《教育心理学》形成性考核1-4答案
- 市政道路及设施零星养护服务技术方案(技术标)
- 《中国心力衰竭诊断和治疗指南2024》解读(总)
- VTE评估及护理预防
- 七年级数学上册 期中考试卷(沪科安徽版)
- 人像摄影布光PPT优秀课件
- 餐饮合同范本
- 暗黑3夺魂之镰物品名称中英文对照
- 注塑品质检验标准
- SYB创业培训教材练习题参考答案
- 益盟特色功能系统参数及公式
评论
0/150
提交评论