`

生成基于RSA与SM2数字证书的请求PKCS10CertificationRequest

 
阅读更多

申请证书时生成的req文件需要:主题  密钥对 签名加密算法

 

写道
import java.io.IOException;
import java.security.InvalidKeyException;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.NoSuchAlgorithmException;
import java.security.NoSuchProviderException;
import java.security.SecureRandom;
import java.security.SignatureException;
import javax.security.auth.x500.X500Principal;
import sun.misc.BASE64Encoder;

/**
* @param algorithm签名算法 1.SHA1withRSA 2.SM3WITHSM2
* @param dn主题
* @param keyPair密钥对
* @param keyType密钥类型 SM2|RSA
* @return 返回p10请求的字符串
* @throws SignatureException
* @throws NoSuchProviderException
* @throws NoSuchAlgorithmException
* @throws InvalidKeyException
* @throws KeyPairException
*/
private static String getP10ReqestBC(String algorithm, String dn, KeyPair keyPair,String keyType) throws InvalidKeyException, NoSuchAlgorithmException, NoSuchProviderException, SignatureException
{
String p10RequestString = null;
byte[] p10buffer = null;
if(keyType.equals("SM2")){
fisher.man.jce.PKCS10CertificationRequest p10Request;
p10Request = new fisher.man.jce.PKCS10CertificationRequest(
algorithm, new X500Principal(dn), keyPair.getPublic(),
null, keyPair.getPrivate());
p10buffer = p10Request.getDEREncoded();
}else{
org.bouncycastle.jce.PKCS10CertificationRequest p10Request;
p10Request = new org.bouncycastle.jce.PKCS10CertificationRequest(
algorithm, new X500Principal(dn), keyPair.getPublic(),
null, keyPair.getPrivate());
p10buffer = p10Request.getDEREncoded();
}

p10RequestString = new BASE64Encoder().encode(p10buffer);

return p10RequestString;
}

public static void main(String[] args) throws IOException, InvalidKeyException, NoSuchAlgorithmException, NoSuchProviderException, SignatureException {
// algorithm签名算法 SM2
String algorithm = "SM3WITHSM2";
// dn主题
String dn = "CN=dfg, OU=aert, O=45y, L=sdfg, ST=fg, C=CN";

KeyPairGenerator ecPair = null;
SecureRandom rand = null;
rand = SecureRandom.getInstance("TrueRandom", "FishermanJCE");
ecPair = KeyPairGenerator.getInstance("SM2", "FishermanJCE");
ecPair.initialize(256, new SecureRandom());
// keyPair密钥对
KeyPair keyPair = ecPair.generateKeyPair();
String requestReq = getP10ReqestBC(algorithm,dn,keyPair,"SM2");
System.out.println("SM2 私钥=" + keyPair.getPrivate());
System.out.println("SM2 公钥=" + keyPair.getPublic());
System.out.println("SM2 p10请求的字符串=" + requestReq);


System.err.println("************************************");
System.err.println("************************************");
System.err.println("************************************");

// algorithm签名算法 RSA
String algorithm2 = "SHA1withRSA";
// dn主题
String dn2 = "CN=zdfg, OU=ert, O=er, L=fgj, ST=vfgh, C=CN";

rand = SecureRandom.getInstance("TrueRandom", "FishermanJCE");
ecPair = KeyPairGenerator.getInstance("RSA", "BC");
ecPair.initialize(1024, new SecureRandom());

// keyPair密钥对
KeyPair keyPair2 = ecPair.generateKeyPair();
String requestReq2 = getP10ReqestBC(algorithm2,dn2,keyPair2,"RSA");
System.out.println("RSA 私钥=" + keyPair.getPrivate());
System.out.println("RSA 公钥=" + keyPair.getPublic());
System.out.println("RSA p10请求的字符串=" + requestReq2);
}

 

 输出结果:

写道

SM2 私钥=EC Private Key
S: a40ed786b2867685507a4abad7264dbff72341f79503e6ff5366703789a2a7d7

SM2 公钥=EC Public Key
X: c337bb8017d572bcbc03b42280e43114fbefdff1d9a4e08866afb8ebecfe0547
Y: ae5d3c580e5d348be7a1db7d079983f9a4a59866267d951ddbbdcc45775ed82a

SM2 p10请求的字符串=MIIB5jCCAZECAQAwVDELMAkGA1UEBhMCQ04xCzAJBgNVBAgTAmZnMQ0wCwYDVQQHEwRzZGZnMQww
CgYDVQQKEwM0NXkxDTALBgNVBAsTBGFlcnQxDDAKBgNVBAMTA2RmZzCCATQwge0GCCqBHIFFAYIt
MIHgAgEBMCwGByqGSM49AQECIQCFQtaeTARPGOi5JDW/b/feRXKDkVxFUX1yLtuLCPHfwzBEBCB4
eWi0+jLD/SQXhC5zu/7/LzyEi2gx1+DsZSKLOTfkmAQgY+TG07I7DISc+EJBSEv+SPYdWaWxa6Bu
bhLR2ifFJJoEQQRCHevWG2LqtnRkNOvDzDFeMiILO63VC9xMTmwUf+3UPQaAUSvLtCwH1HNJ0hU7
cMTl1/38v6NuoahYQbnkbgmiAiEAhULWnkwETxjouSQ1v2/33Sl3IGMEhWKNWudO58MuebcCAQED
QgAEwze7gBfVcry8A7QigOQxFPvv3/HZpOCIZq+46+z+BUeuXTxYDl00i+eh230HmYP5pKWYZiZ9
lR3bvcxFd17YKjAMBggqgRyBRQGDdQUAA0EAhneSdWonUMXL0Sk4vpzPtqZvUddbYo/Bb7o3a+Te
k4+v/kp8q7hvA+2BubXpTSAE2AjE0qytc4THB++vmI75Lg==
************************************
************************************
************************************
RSA 私钥=EC Private Key
S: a40ed786b2867685507a4abad7264dbff72341f79503e6ff5366703789a2a7d7

RSA 公钥=EC Public Key
X: c337bb8017d572bcbc03b42280e43114fbefdff1d9a4e08866afb8ebecfe0547
Y: ae5d3c580e5d348be7a1db7d079983f9a4a59866267d951ddbbdcc45775ed82a

RSA p10请求的字符串=MIIBkTCB+wIBADBUMQswCQYDVQQGEwJDTjENMAsGA1UECBMEdmZnaDEMMAoGA1UEBxMDZmdqMQsw
CQYDVQQKEwJlcjEMMAoGA1UECxMDZXJ0MQ0wCwYDVQQDEwR6ZGZnMIGfMA0GCSqGSIb3DQEBAQUA
A4GNADCBiQKBgQCPE+/QiaeKTWc/vZueZ6j8D1YaPdW8Hmgq1dJBwKPhGmWpEwbDxMwNpDalHeax
JXnNFVPwtDhzTOGTm9QBLsnhM0/YxrLD/sK5RYD0T8786/HQrRat1n5xg3rnHKntM3QoWbw4iW7h
T62Yrro62xP8hnWArrbOc5dUpDAD/twNIwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAGN8AhMQMToq
IyRlkF3LCkCMT9CKnn4p+qIn3u0WMWIkm7S80/WDBhXMoUSQH2ZK1wcjErCIJwGXmiPmuFU9sD/V
euwF0ul/WxjuQUzU9VHYuNyYajC2xVyVl+rE0Zc8SDMyU80V1/eAAp2fPIcKvET4pKzhYh4n3iDh
Gb0U57Iq

 

分享到:
评论
10 楼 宋贝贝 2018-10-17  
您好,能麻烦您把这个包fisher.man.jce.PKCS10CertificationRequest发一下么。谢谢!我的邮箱是songbeibei99@163.com
9 楼 upset_ming 2018-06-04  
DoubleCA的JCE实现了SM2算法的密钥协商,国密SM2、SM3、SM4算法全套都实现了,包括JAVA KeyStore,叫dcks,实现了SM2密钥对的存储,包括国密SSL,可以实现Tomcat的国密SSL功能。包括各种国密数字证书都可以免费制作。
可在Android和各JAVA平台上使用。
8 楼 stormlyf 2018-05-03  
您好,能麻烦您把这个包fisher.man.jce.PKCS10CertificationRequest发一下么。谢谢!我的邮箱是stormlyf@163.com
7 楼 linxinlong11007 2017-03-23  
你好,我需要FishermanJCE,请问能发份这个包给我么?328997553@qq.com
6 楼 candyo75 2016-10-11  
你好,我也需要这个例子的依赖的FishermanJCE相关的包 我百度都没有找到相关jar,请帮忙把相关jar发给我邮箱: 347043354@qq.com
5 楼 linpz 2013-05-13  
FishermanJCE 是山东渔翁公司加密卡提供调用加密机/加密卡的Jar包来的。。。
4 楼 lishifu2009 2012-04-11  
好像要用起来还需好多包啊。。。。。
我设置了
Security.addProvider(new fisher.man.jce.provider.FishermanJCE());
结果还报这个错误。。。
Exception in thread "main" java.lang.NoClassDefFoundError: com/fmjnicard/fm_jni_api
at fisher.man.jce.provider.FishermanJCE.<init>(FishermanJCE.java:90)
com/fmjnicard/fm_jni_api
能否再发下包哈哈。。。
多谢。。。
3 楼 lishifu2009 2012-04-11  
哈哈 好像还是不行。。。。。。。
Exception in thread "main" java.security.NoSuchProviderException: no such provider: FishermanJCE
at sun.security.jca.GetInstance.getService(GetInstance.java:66)
at sun.security.jca.GetInstance.getInstance(GetInstance.java:190)
at java.security.SecureRandom.getInstance(SecureRandom.java:293)
at testli.ww.main(ww.java:58)

麻烦帮我看看喽,谢了
2 楼 lishifu2009 2012-04-09  
您好,fisher.man.jce.PKCS10CertificationRequest 这个包给我发吧,我的邮箱:lishifu2009@qq.com  谢谢。
1 楼 ggh666 2012-02-29  
请问 假如有“a40ed786b2867685507a4abad7264dbff72341f79503e6ff5366703789a2a7d7” 这样的 数据 如何能还原成 privateKey 私钥的对象呢

相关推荐

Global site tag (gtag.js) - Google Analytics