日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

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

發布時間:2023/12/20 java 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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实例详解的全部內容,希望文章能夠幫你解決所遇到的問題。

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