首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

数字签名引见和java的实现

2012-10-26 
数字签名介绍和java的实现?现实中的文件和书信我们可以通过印章来确定它的有效和可信性,那么在计算机网络

数字签名介绍和java的实现

?

现实中的文件和书信我们可以通过印章来确定它的有效和可信性,那么在计算机网络中传送的报文如何保证呢?这就是数字签名要解决的问题。

数字签名必须能保证以下3点

1.接收者能够核实发送者对报文的签名。

2.发送者事后不能抵赖对报文的签名。

3.接收者不能伪造对报文的签名。

?

目前已经存在着各种各样数字签名方法。今天为大家介绍一种java中比较容易实现的公开密钥算法来做数字签名。首先介绍一下公开密钥算法实现数字签名的原理:

?

public boolean validData (byte[] data,String publicKey,String signature) {try { // valid the file with public key and signaturebyte[] encodedpubKey = StringUtil.decodeHex(publicKey);X509EncodedKeySpec pubKeySpec = new X509EncodedKeySpec(encodedpubKey);KeyFactory keyFactory;keyFactory = KeyFactory.getInstance("DSA");PublicKey pubKey = keyFactory.generatePublic(pubKeySpec);byte[] sign = StringUtil.decodeHex(signature);Signature s = Signature.getInstance("DSA");s.initVerify(pubKey);s.update(data);boolean flag = s.verify(sign);return flag;} catch (NoSuchAlgorithmException e) {e.printStackTrace();} catch (InvalidKeySpecException e) {e.printStackTrace();} catch (InvalidKeyException e) {e.printStackTrace();} catch (SignatureException e) {e.printStackTrace();}return false;}?

?

?

1 楼 ivyloo 2009-06-03   有帮助,谢谢!
另外请问,StringUtil.encodeHex(signature);   在什么包中可取得该方法?
2 楼 ttkktt 2009-06-04   StringUtil.decodeHex和encodeHex方法是自己写的对签名转换成Hex码的方法。

热点排行