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());
}
}

最新文章

  1. 第11章 Windows线程池(1)_传统的Windows线程池
  2. Colorable Fantasy UI
  3. 一篇文章告诉你为何GitHub估值能达20亿美元
  4. Fortran向C传递NULL值
  5. 如何通过ps -ef|grep tomcat只获得你需要的查询进程,排除掉grep本身的进程信息
  6. java搭建finagle(2)
  7. 在项目中 background transiton 带来的"便利"与“坑”
  8. EF多数据库预热
  9. 关于TCP的三次握手和四次分手(整理)
  10. hdu 1150 Machine Schedule hdu 1151 Air Raid 匈牙利模版
  11. html5 Geolocation(地理位置定位)学习
  12. SpriteBuilder弹出菜单层造成卡顿的解决办法
  13. MT【267】第一次很重要
  14. 一些有用的Java学习资料
  15. Dubbo+zookeeper面试题补充
  16. servlet中的请求响应与重定向区别
  17. SQL Server扩充表字段长度,引发的意外KILLED/ROLLBACK
  18. Python内置模块之time、random、hashlib、OS、sys、UUID模块
  19. Chinese_remainder_theorem
  20. JavaScript Ajax上传文件miniupload.js

热门文章

  1. C++模板中重要的术语
  2. Android怎样从外部跳进App
  3. vue2.0 vue-loader
  4. FPGA主要应用
  5. Tomcat部署项目修改浏览器上猫咪头像
  6. React开发实时聊天招聘工具 -第五章 需求分析
  7. 如何批量ping地址查看网络是否畅通
  8. 虚拟摄像头vivi的测试(二)
  9. Httpd 文件服务器的搭建
  10. CCF模拟题 最大的矩形