(4) Java语言是健壮的。
(5) Java语言是安全的。
(6) Java语言是体系结构中立的
(7) Java语言是可移植的。
(8) Java语言是解释型的。
(9) Java是高性能的。
(10) Java语言是多线程的。
(11) Java语言是动态的。
5.2系统部分模块的实现
核心代码写在一个接口中,方便以后系统的扩展和修改,接口内容如下:
方法一:用于创建公钥和私钥的函数:
boolean createPublicAndPrivateKey(String address) throws Exception;
方法二:用于对文件进行数字签名的函数:
boolean createSignature(String address1,String address2)throws Exception;
方法三:用于对文件签名验证的函数:
String checkSignature(String address1,String address2)throws Exception;
5.2.1 创建公钥和私钥
导入包import java.security.KeyPairGenerator;这个包是java类库中一个特定的算法用来生成公钥和私钥。使用KeyPairGenerator列获取实例非对称密钥加密DSA的算法:
KeyPairGenerator keyGen=KeyPairGenerator.getInstance("DSA");
对非对称密钥加密DSA的实例进行初始化:
keyGen.initialize(1024);
使用非对称密钥加密DSA的实例获取公钥和私钥对:
KeyPair key=keyGen.generateKeyPair();
使用获取到的公私钥对进一步的得到公钥:
PublicKey publicKey=key.getPublic();
使用获取到的公私钥对进一步的得到私钥:
PrivateKey privateKey=key.getPrivate();
5.2.2 在数据发送端的数字签名
根据输入的address1参数,创建文件对象file_info,同时将文件对象file_info放入文件流fis_info中,根据创建的文件对象file_info统计出文件中的字符数创建byte数组,读入byte数组到内存中。
根据读入参数address2参数,创建文件对象fis_private,同时将文件对象fis_private放入对象流ois_private中,根据对象流读入私钥放入新创建的对象privateKey中。
导入类Signature,这个签名类是用于提供数字签名算法DSA的:
Signature sig=Signature.getInstance("DSA");
将读入的私钥作为参数放入签名类中:
sig.initSign(privateKey);
对读入的文件进行签名得到一段签名的密文:
sig.update(infoBytes);
5.2.3 在数据接收端的验证
根据输入的address1参数,创建文件对象file_info,同时将文件对象file_info放入文件流fis_info中,根据创建的文件对象file_info统计出文件中的字符数创建byte数组,读入byte数组到内存中。
根据读入参数address2参数,创建文件对象fis_private,同时将文件对象fis_private放入对象流ois_private中,根据对象流读入公钥钥放入新创建的对象publicKey中。
导入类Signature,这个签名类是用于提供数字签名算法DSA的: 数字签名在电子政务系统中的实现(4):http://www.751com.cn/jisuanji/lunwen_3073.html