数字签名算法DSA
2017-10-19 14:27
357 查看
import org.apache.commons.codec.binary.Hex; import java.security.*; import java.security.interfaces.DSAPrivateKey; import java.security.interfaces.DSAPublicKey; import java.security.spec.PKCS8EncodedKeySpec; import java.security.spec.X509EncodedKeySpec; /** * Created by pengchao on 2017/10/19. */ public class IMoocDSA { private static String src ="imooc security dsa"; public static void main(String[] args) { jdkDSA(); } public static void jdkDSA(){ try { //初始化密钥 KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("DSA"); keyPairGenerator.initialize(512); KeyPair keyPair = keyPairGenerator.generateKeyPair(); DSAPublicKey dsaPublicKey = (DSAPublicKey) keyPair.getPublic(); DSAPrivateKey dsaPrivateKey = (DSAPrivateKey) keyPair.getPrivate(); //2.执行签名 PKCS8EncodedKeySpec pkcs8EncodedKeySpec = new PKCS8EncodedKeySpec(dsaPrivateKey.getEncoded()); KeyFactory keyFactory = KeyFactory.getInstance("DSA"); PrivateKey privateKey = keyFactory.generatePrivate(pkcs8EncodedKeySpec); Signature signature = Signature.getInstance("SHA1withDSA"); signature.initSign(privateKey); signature.update(src.getBytes()); byte[] bytes = signature.sign(); System.out.println("jdk dsa sign:" + Hex.encodeHexString(bytes)); //3.验证签名 X509EncodedKeySpec x509EncodedKeySpec = new X509EncodedKeySpec(dsaPublicKey.getEncoded()); keyFactory = KeyFactory.getInstance("DSA"); PublicKey publicKey = keyFactory.generatePublic(x509EncodedKeySpec); signature = Signature.getInstance("SHA1withDSA"); signature.initVerify(publicKey); signature.update(src.getBytes()); boolean bool = signature.verify(bytes); System.out.println("jdk dsa verify :" + bool); } catch (Exception e) { e.printStackTrace(); } } }
相关文章推荐
- 【密钥算法】Java加密技术(六)---DSA 数字签名算法
- Java加密技术(六)——数字签名算法DSA
- 数字签名算法DSA
- 数字签名算法DSA
- Java加密技术(六)——数字签名算法DSA
- Java加密技术(六)——数字签名算法DSA
- 数字签名算法DSA
- Java加密技术(六)——数字签名算法DSA
- Java数字签名算法DSA实例详解
- JAVA加密算法- 数字签名算法(RSA、DSA)
- Java加密技术(六)——数字签名算法DSA
- 常用数字签名算法RSA与DSA的Java程序内实现示例
- Java加密技术(六)——数字签名算法DSA
- Java加密技术(六)——数字签名算法DSA
- Java加密技术(六)——数字签名算法DSA
- Java加密技术(六)——数字签名算法DSA
- Java加密技术(六)——数字签名算法DSA
- Java加密技术(六)——数字签名算法DSA
- 数字签名算法DSA
- Crypto++(二)数字签名算法DSA