java DSA Signature Sign And Verify
2024-10-01 17:49:23
SignatureSignAndVerify
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.SecureRandom;
import java.security.Security;
import java.security.Signature; public class SignatureSignAndVerify { public static void main(String args[]) throws Exception {
Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider()); KeyPair keyPair = generateKeyPair(); byte[] data = { , , , , , , , , , };
byte[] digitalSignature = signData(data, keyPair.getPrivate()); boolean verified; verified = verifySig(data, keyPair.getPublic(), digitalSignature);
System.out.println(verified) ; keyPair = generateKeyPair();
verified = verifySig(data, keyPair.getPublic(), digitalSignature);
System.out.println(verified); } public static byte[] signData(byte[] data, PrivateKey key) throws Exception {
Signature signer = Signature.getInstance("SHA1withDSA");
signer.initSign(key);
signer.update(data);
return (signer.sign());
} public static boolean verifySig(byte[] data, PublicKey key, byte[] sig) throws Exception {
Signature signer = Signature.getInstance("SHA1withDSA");
signer.initVerify(key);
signer.update(data);
return (signer.verify(sig)); } public static KeyPair generateKeyPair(long seed) throws Exception {
Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
KeyPairGenerator keyGenerator = KeyPairGenerator.getInstance("DSA");
SecureRandom rng = SecureRandom.getInstance("SHA1PRNG", "SUN");
rng.setSeed(seed);
keyGenerator.initialize(, rng); return (keyGenerator.generateKeyPair());
}
}
最新文章
- 第11章 Windows线程池(1)_传统的Windows线程池
- Colorable Fantasy UI
- 一篇文章告诉你为何GitHub估值能达20亿美元
- Fortran向C传递NULL值
- 如何通过ps -ef|grep tomcat只获得你需要的查询进程,排除掉grep本身的进程信息
- java搭建finagle(2)
- 在项目中 background transiton 带来的";便利";与“坑”
- EF多数据库预热
- 关于TCP的三次握手和四次分手(整理)
- hdu 1150 Machine Schedule hdu 1151 Air Raid 匈牙利模版
- html5 Geolocation(地理位置定位)学习
- SpriteBuilder弹出菜单层造成卡顿的解决办法
- MT【267】第一次很重要
- 一些有用的Java学习资料
- Dubbo+zookeeper面试题补充
- servlet中的请求响应与重定向区别
- SQL Server扩充表字段长度,引发的意外KILLED/ROLLBACK
- Python内置模块之time、random、hashlib、OS、sys、UUID模块
- Chinese_remainder_theorem
- JavaScript Ajax上传文件miniupload.js