数字签名算法DSA

来源:互联网 发布:做数据库有前途吗 编辑:程序博客网 时间:2024/05/21 07:01
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();        }    }}

原创粉丝点击