设为首页 加入收藏

TOP

使用JAVA数字证书做数字签名认证
2014-10-30 18:15:10 来源: 作者: 【 】 浏览:73
Tags:使用 JAVA 数字证书 数字签名 认证

  1.


  keytool -genkey -keystore chinajavaworld.keystore -alias chinajavaworld


  这个命令用来产生一个密匙库,执行完毕后会在当前操作目录中产生一个chinajavaworld.keystore的文件,在执行命令的时候还有提示你输入密匙库的密码,要记住,后面还要用到。


  2.


  keytool -export -keystore chinajavaworld.keystore


  -alias chinajavaworld -file chinajavaworld.cer


  这个命令用来产生签名时所要用的证书。


  3.在JAVA里操作,将Cer内容改为BASE64编码


  //从密钥库中读取CA证书


  String storepass = "123456";


  //前面设置的密码


  FileInputStream in = new FileInputStream("e:\\license\\a\\chinajavaworld.keystore"); KeyStore ks = KeyStore.getInstance("JKS"); ks.load(in, storepass.toCharArray());


  //获取证书 java.security.cert.Certificate c1 = ks.getCertificate("chinajavaworld");


  //BASE64编码 System.out.println(StringUtils.encodeBase64(c1.getEncoded()));


  //将chinajavaworld.cer内容改为这里输出的内容


  4.开始产生(测试)签名


  Signature signature;


  try {


  InputStream streamCert = new java.io.FileInputStream( "e:\\license\\a\\test.cer");


  CertificateFactory factory = CertificateFactory.getInstance("X.509");


  Certificate cert = factory.generateCertificate(streamCert);


  System.out.println(StringUtils.encodeBase64(cert.getEncoded()));


  signature = Signature.getInstance("SHA1withDSA");


  signature.initVerify(cert.getPublicKey());


  //要签名的指纹内容


  String sss = "Welcome to www.chinajavaworld.com,The java world for you forever.";


  //获取CA证书私钥


  PrivateKey priKey=(PrivateKey)ks.getKey("test",storepass.toCharArray());


  System.out.println("priKey:"+StringUtils.encodeHex(priKey.getEncoded()));


  //用私钥签名


  sig = Signature.getInstance("SHA1withDSA");


  sig.initSign(priKey);


  ByteArrayOutputStream streamRaw0 = new ByteArrayOutputStream();


  DataOutputStream streamSig0 = new DataOutputStream(streamRaw0);


  streamSig0.writeUTF(sss); sig.update(streamRaw0.toByteArray());


  String signatureS = StringUtils.encodeHex(sig.sign());


  System.out.println("signature: "+signatureS);


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇JS实现刷新iframe的方法 下一篇JAVA中各类CACHE机制实现的比较

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: