Java数字签名算法DSA实例详解
程序员文章站
2023-12-12 14:37:46
本文实例讲述了java数字签名算法dsa。分享给大家供大家参考,具体如下:
一、介绍
dss:digital signature standard 数字签名标准
ds...
本文实例讲述了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加密/解密工具:
文字在线加密解密工具(包含aes、des、rc4等):
md5在线加密工具:
http://tools.jb51.net/password/createmd5password
在线散列/哈希算法加密工具:
在线md5/hash/sha-1/sha-2/sha-256/sha-512/sha-3/ripemd-160加密工具:
在线sha1/sha224/sha256/sha384/sha512加密工具:
更多关于java相关内容感兴趣的读者可查看本站专题:《java数学运算技巧总结》、《java数据结构与算法教程》、《java字符与字符串操作技巧总结》、《java操作dom节点技巧总结》和《java缓存操作技巧汇总》
希望本文所述对大家java程序设计有所帮助。