数字签名在电子政务系统中的实现(4)
时间:2017-02-17 12:50 来源:毕业论文 作者:毕业论文 点击:次
(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的: (责任编辑:qin) |