数字签名算法_DSA
2017-03-16 23:36
393 查看
DSS:数字签名标准
DSA:数字签名算法
DSA和RSA区别:
DSA:仅包含数字签名RSA:既包含数字签名也包含数字加密
DSA签名和RSA签名Java jdk提供的实现代码基本一样,BC提供的没学学习过不知道啥情况。
直接上代码吧:
public class DemoDsa { public static void jdkDSA(String data) { // 初始化密钥 try { KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("DSA"); keyPairGenerator.initialize(512); KeyPair keyPair = keyPairGenerator.generateKeyPair(); //0. 获取公钥和密钥 DSAPublicKey dsaPublicKey = (DSAPublicKey) keyPair.getPublic(); DSAPrivateKey dsaPrivateKey = (DSAPrivateKey) keyPair.getPrivate(); //1.执行签名 PKCS8EncodedKeySpec pkcs8EncodedKeySpec = new PKCS8EncodedKeySpec(dsaPrivateKey.getEncoded()); KeyFactory keyFactory = KeyFactory.getInstance("DSA"); PrivateKey privateKey = keyFactory.generatePrivate(pkcs8EncodedKeySpec); Signature signature = Signature.getInstance("SHAwithDSA"); signature.initSign(privateKey); signature.update(data.getBytes()); //加密后的结果 byte[] result = signature.sign(); //打印数据 StringBuilder hexString = new StringBuilder(); for (int i = 0; i < result.length; i++) { if ((result[i] & 0xff) < 0x10) hexString.append("0"); hexString.append(Integer.toHexString(0xFF & result[i])); } System.out.println("加密后的数据:" + hexString.toString().toLowerCase()); //3.验证签名 X509EncodedKeySpec x509EncodedKeySpec=new X509EncodedKeySpec(dsaPublicKey.getEncoded()); keyFactory=KeyFactory.getInstance("DSA"); PublicKey publicKey=keyFactory.generatePublic(x509EncodedKeySpec); signature=Signature.getInstance("SHAwithDSA"); signature.initVerify(publicKey); signature.update(data.getBytes()); //验证后的结果 boolean isOk=signature.verify(result); System.out.println("验证结果:"+isOk); } catch (Exception e) { e.printStackTrace(); } } }
调用这个签名:
jdkDSA("i love you");
相关文章推荐
- Java加密技术(六)——数字签名算法DSA
- JAVA加密算法- 数字签名算法(RSA、DSA)
- Java数字签名算法DSA实例详解
- Java加密技术(六)——数字签名算法DSA
- 常用数字签名算法RSA与DSA的Java程序内实现示例
- Java加密技术(六)——数字签名算法DSA
- Java加密技术(六)——数字签名算法DSA
- Java加密技术(六)——数字签名算法DSA
- Java加密技术(六)——数字签名算法DSA
- Java加密技术(六)——数字签名算法DSA
- Java加密技术(六)——数字签名算法DSA
- 数字签名算法DSA
- Crypto++(二)数字签名算法DSA
- 数字签名算法DSA
- java-信息安全(十)-数字签名算法DSA
- 数字签名算法 - DSA
- Java加密算法(六)——数字签名算法DSA
- 什么是数字签名算法(DSA)
- java-信息安全(十)-数字签名算法DSA
- 数字签名算法DSA