毕业论文
计算机论文
经济论文
生物论文
数学论文
物理论文
机械论文
新闻传播论文
音乐舞蹈论文
法学论文
文学论文
材料科学
英语论文
日语论文
化学论文
自动化
管理论文
艺术论文
会计论文
土木工程
电子通信
食品科学
教学论文
医学论文
体育论文
论文下载
研究现状
任务书
开题报告
外文文献翻译
文献综述
范文
数字签名系统的设计与实现+流程图(4)
图2 写入签名
(3)在数据接收端对数据进行校验数据签名
通过FileInputStream文件流和ObjectInputStream对象分别读入文件、密钥、签名。通过Signature类使用getInstance工厂方法构造DSA算法Signature对象,通过initVerify()方法使用公钥初始化Signature对象。然后使用update()方法签名的文件进行解密操作,最后使用verify()方法验证解密后的代码和消息摘要是否一致。
图3 签名验证
4.3 数字签名系统的流程图
根据系统的操作流程,大致可以把系统分为如下结构:
图4 数字签名系统流程图
5.数字签名系统的实现
设计了公私密钥对生成模块,数据签名模块,数据校验模块,针对三个模块中用到的技术,做一下详细的阐述。
5.1 公私密钥对生成模块
生成密钥对可用java提供的类KeyPairGenerator,用其中的getInstance方法创建KeypairGenerator对象,在用initialize进行初始化,最后用generateKeyPair生成密钥对,密钥对生成后,就可以将其写入文件中。通过网络或其他方式公告用户,用户接收到数据文件和签名文件后,就可以使用公约来校验数据文件的数字签名。
直接使用import java.security.KeyPairGenerator导入包用于生成公私密钥对。
FileOutputStream fos_public=new
FileOutputStream(“public.key”);
ObjectOutputStream oos_public=new
ObjectOutputStream(fos_public);
FileOutputStream fos_private=new
FileoutputStream(“private.key”);
ObjectOutputStream oos_private=new
ObjectOutputStream(fos_private);
KeyPairGenerator
在公私密钥生成模块中使用KeyPairGenerator获取DSA算法:
keyGen=KeyPairGenerator.getInstance(“DSA”);
对DSA的实例进行初始化:
keyGen.initialize(1024);
使用非对称密钥加密DSA的实例获取公钥和私钥对:
KeyPair key=keyGen.generateKeyPair();
从生成的公私钥对中获取公钥:
PublicKey publicKey=key.getPublic();
从生成的公私钥对中获取私钥:
PrivateKey privateKey=key.getPrivate();
进行相应的关闭:
oos_public.writeObject(publicKey);
oos_private.writeObjecr(privatekey);
fos_public.close();
oos_public.close();
fos_private.close();
oos_private.close();
提示生成密钥对:
System.out.println(“密钥对生成!”);
5.2 数据签名模块
导入包import java.io.File用于创建文件对象file_info,引入文档info.txt将要加密内容写入文档。
读入info.txt将文件对象file_info放入文件流fis_info中,根据创建的文件对象file_info统计出文件中的字符数创建byte数组,读入byte数组到内存中。
File file_info=new File(“info_txt”);
FileInputStream fis_info=new
FileInputStream(file_info);
Int fileInfoLength=(int)file_info.length();
byte[] infoBytes=new byte[fileInfoLength];
fis_info.read(infoBytes);
fis_info.close();
读入私钥,创建文件对象fis_private,同时将文件对象fis_private放入对象流ois_private中,根据对象流读入私钥放入新创建的对象privateKey中。
FileInputStream fis_private=new
FileInputStream(“private.key”);
ObjectInputStream ois_private=new
ObjectInputStream(fis_private);
PrivateKey orivateKey=(PrivateKey)
ois_private.readObject();
fis_private.close();
ois_private.close();
生成签名,导入类Signature用于提供数字签名算法DSA:
共4页:
上一页
1
2
3
4
下一页
上一篇:
基于遗传算法的云计算任务调度研究
下一篇:
基于.NET的师生在线交流平台的设计和实现
基于Apriori算法的电影推荐
java+mysql通用试题库系统后台设计与实现
PHP+IOS的会议管理系统的设计+ER图
数据挖掘在电子商务中的应用
数据挖掘的主题标绘数据获取技术与实现
基于PageRank算法的网络数据分析
基于神经网络的验证码识别算法
国内外图像分割技术研究现状
志愿者活动的调查问卷表
公寓空调设计任务书
10万元能开儿童乐园吗,我...
中国学术生态细节考察《...
AT89C52单片机的超声波测距...
C#学校科研管理系统的设计
神经外科重症监护病房患...
医院财务风险因素分析及管理措施【2367字】
承德市事业单位档案管理...