资源简介
实现java代码生成cer证书文件,然后可以通过代码获取 不通过keytool工具。生成密钥对。使用公钥加密。
代码片段和文件信息
package com.ufida.ehr.sso.cert;
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.math.BigInteger;
import java.nio.charset.Charset;
import java.security.InvalidKeyException;
import java.security.KeyPair;
import java.security.NoSuchProviderException;
import java.security.SecureRandom;
import java.security.Security;
import java.security.SignatureException;
import java.security.cert.CertificateFactory;
import java.security.cert.X509Certificate;
import java.util.Date;
import javax.security.auth.x500.X500Principal;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import org.bouncycastle.x509.X509V1CertificateGenerator;
/**
* 实现对证书的操作,生成证书,获取证书
* @author Administrator
*
*/
public class CertHandlers {
/**
*
* @param pair 密钥对
* @param bdate 有效期
* @param edate 有效期
* @param info 证书信息
* @return
* @throws InvalidKeyException
* @throws NoSuchProviderException
* @throws SignatureException
*/
@SuppressWarnings(“deprecation“)
public X509Certificate generateV1Certificate(KeyPair pairDate bdateDate edateX500Principal info)
throws InvalidKeyException NoSuchProviderException SignatureException
{
// generate the certificate
Security.addProvider(new BouncyCastleProvider());
X509V1CertificateGenerator certGen = new X509V1CertificateGenerator();
certGen.setSerialNumber(BigInteger.valueOf(System.currentTimeMillis()));
certGen.setIssuerDN(info);
certGen.setNotBefore(bdate);
certGen.setNotAfter(edate);
certGen.setSubjectDN(new X500Principal(“CN=Test Certificate“));
certGen.setPublicKey(pair.getPublic());
// i get error here
certGen.setSignatureAlgorithm(“SHA256WithRSAEncryption“);
return certGen.generateX509Certificate(pair.getPrivate() “BC“);
}
/**
* * 生成证书文件
* @param address 文件保存的路径
* @param bdate 有效期
* @param edate 有效期
* @param info 证书信息
* @param algorithm 算法名称
* @param keysize 密钥长度
* @param random 随机源
* @throws Exception
*/
public void ProCert(String addressDate bdateDate edateX500Principal infoString algorithmint keysize SecureRandom random)throws Exception{
// create the keys
KeyGen pc = new KeyGen();
KeyPair kp = pc.getKeyPair(algorithm keysize random);
// generate the certificate
X509Certificate cert = generateV1Certificate(kpbdateedateinfo);
// show some basic validation
cert.checkValidity(new Date());
cert.verify(cert.getPublicKey());
FileOutputStream o = new FileOutputStream(address);
Writer wr = new OutputStreamWriter(o Charset.forName(“UTF-8“));
wr.write(“-----BEGIN CERTIFICATE-----\n“);
wr.write(new sun.misc.base64Encode
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 3948 2011-10-27 09:16 cert\CertHandlers.java
文件 1402 2011-10-27 09:18 cert\KeyGen.java
文件 816 2011-10-27 09:26 cert\test.java
目录 0 2011-10-27 09:20 cert
----------- --------- ---------- ----- ----
6166 4
- 上一篇:J2EE的13种核心模式
- 下一篇:android各种传感器
相关资源
- java图片浏览器跨平台运行程序与源码
- 基于java的在线考试系统-毕业设计
- 微博系统(Java源码,servlet+jsp),适
- java串口通信全套完整代码-导入eclip
- jsonarray所必需的6个jar包.rar
- 三角网构TIN生成算法,Java语言实现
- java代码编写将excel数据导入到mysql数据
- Java写的cmm词法分析器源代码及javacc学
- JAVA JSP公司财务管理系统 源代码 论文
- JSP+MYSQL旅行社管理信息系统
- 推荐算法的JAVA实现
- 基于Java的酒店管理系统源码(毕业设
- java-图片识别 图片比较
- android毕业设计
- java23种设计模式+23个实例demo
- java Socket发送/接受报文
- JAVA828436
- java界面美化 提供多套皮肤直接使用
- 在线聊天系统(java代码)
- 基于Java的图书管理系统807185
- java中实现将页面数据导入Excel中
- java 企业销售管理系统
- java做的聊天系统(包括正规课程设计
- Java编写的qq聊天室
- 商店商品管理系统 JAVA写的 有界面
- JAVA开发聊天室程序
- 在linux系统下用java执行系统命令实例
- java期末考试试题两套(答案) 选择(
- JAVA3D编程示例(建模、交互)
- Java 文件加密传输
评论
共有 条评论