日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

dsa的java实现_Java数字签名算法DSA实例详解

發布時間:2023/12/20 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 dsa的java实现_Java数字签名算法DSA实例详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文實例講述了Java數字簽名算法DSA。分享給大家供大家參考,具體如下:

一、介紹

DSS:Digital Signature Standard 數字簽名標準

DSA:Digital Signature Algorithm 數字簽名算法

DSA僅包含數字簽名

二、參數說明

三、代碼實現

package com.imooc.security.dsa;

import java.security.KeyFactory;

import java.security.KeyPair;

import java.security.KeyPairGenerator;

import java.security.PrivateKey;

import java.security.PublicKey;

import java.security.Signature;

import java.security.interfaces.DSAPrivateKey;

import java.security.interfaces.DSAPublicKey;

import java.security.spec.PKCS8EncodedKeySpec;

import java.security.spec.X509EncodedKeySpec;

import org.apache.commons.codec.binary.Hex;

public class ImoocDSA {

private static String src = "cakin24 security dsa";

public static void main(String[] args) {

jdkDSA();

}

public static void jdkDSA() {

try {

//1.初始化密鑰

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[] result = signature.sign();

System.out.println("jdk dsa sign : " + Hex.encodeHexString(result));

//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(result);

System.out.println("jdk dsa verify : " + bool);

} catch (Exception e) {

e.printStackTrace();

}

}

}

四、實現效果

jdk dsa sign : 302c0214310539f9e19ec98167a687eb4e8f91e7f47326bf021428080b7f0ad2ccffc71466998d8d364ba516e840

jdk dsa verify : true

五、應用場景

PS:關于加密解密感興趣的朋友還可以參考本站在線工具:

在線RSA加密/解密工具:http://tools.jb51.net/password/rsa_encode

文字在線加密解密工具(包含AES、DES、RC4等):

http://tools.jb51.net/password/txt_encode

MD5在線加密工具:http://tools.jb51.net/password/CreateMD5Password

在線散列/哈希算法加密工具:http://tools.jb51.net/password/hash_encrypt

在線MD5/hash/SHA-1/SHA-2/SHA-256/SHA-512/SHA-3/RIPEMD-160加密工具:http://tools.jb51.net/password/hash_md5_sha

在線sha1/sha224/sha256/sha384/sha512加密工具:http://tools.jb51.net/password/sha_encode

更多關于java相關內容感興趣的讀者可查看本站專題:《Java數學運算技巧總結》、《Java數據結構與算法教程》、《Java字符與字符串操作技巧總結》、《Java操作DOM節點技巧總結》和《Java緩存操作技巧匯總》

希望本文所述對大家java程序設計有所幫助。

總結

以上是生活随笔為你收集整理的dsa的java实现_Java数字签名算法DSA实例详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。