网络安全基础课程设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录
1课程设计简介 (2)
1.1 课程设计的目的 (2)
1.2 课程设计内容 (2)
2课程设计的整体实现过程 (2)
2.1流程分析 (2)
2.2算法实现代码 (4)
2.3测试与评价 (18)
3心得体会 (20)
4参考文献 (21)
1课程设计简介
1.1 课程设计的目的
在数据加密解密算法中,RSA是典型的双密钥体制,目前均在大量使用。通过实验,让我们充分理解和掌握RSA算法的使用。这种加密算法的特点主要是密钥的变化, RSA同时有两把钥匙,公钥与私钥。同时支持数字签名。数字签名的意义在于,对传输过来的数据进行校验。确保数据在传输工程中不被修改。
1.2 课程设计内容
我们一组设计一个使用RSA算法进行加密解密的系统。并设计操作界面,对输入的明文可以进行加解密以及对指定的文件可以加解密。
2课程设计的整体实现过程
2.1流程分析
甲方构建密钥对,将公钥公布给乙方,将私钥保留。
甲方使用私钥加密数据,然后用私钥对加密后的数据签名,发送给乙方签名以及加密后的数据;乙方使用公钥、签名来验证待解密数据是否有效,如果有效使用公钥对数据解密。
乙方使用公钥加密数据,向甲方发送经过加密后的数据;甲方获得加密数据,通过私钥解密。
2.2算法实现代码
package RSA;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
//定义对话框类
class Rsa_dialog extends Dialog 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_jinggao.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,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_p,dialog_q,dialog_mingwen_n;
//定义——选择素数p、q
String 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_n;
Button button_on,button_n;
//定义——可选择的整数e
Panel panel_kexuan_e;
Label label_kexuan_e;
TextArea textarea_kexuan_e;
Button button_e;
//定义——选择e
Panel panel_xuanze_e;
Label label_xuanze_e;
TextField textfield_xuanze_e;
//定义——d
String string_e,string_d;
long long_e,long_d;
Panel panel_d;
Label label_d;
TextField textfield_d;
Button 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,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;