- 浏览: 531408 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
宋贝贝:
您好,能麻烦您把这个包fisher.man.jce.PKCS1 ...
生成基于RSA与SM2数字证书的请求PKCS10CertificationRequest -
upset_ming:
DoubleCA的JCE实现了SM2算法的密钥协商,国密SM2 ...
生成基于RSA与SM2数字证书的请求PKCS10CertificationRequest -
stormlyf:
您好,能麻烦您把这个包fisher.man.jce.PKCS1 ...
生成基于RSA与SM2数字证书的请求PKCS10CertificationRequest -
kris_zhang:
CPU型号怎么弄?
Java获取电脑CPU个数及系统信息 -
linxinlong11007:
你好,我需要FishermanJCE,请问能发份这个包给我么? ...
生成基于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);
}
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平台上使用。
可在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
能否再发下包哈哈。。。
多谢。。。
我设置了
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)
麻烦帮我看看喽,谢了
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 私钥的对象呢
发表评论
-
java实现斐波那契数列
2017-04-13 15:16 1184public class FibTest { pub ... -
java 堆栈的区别
2015-07-13 21:32 831Java把内存分成两种, ... -
使用StringBuffer的好处是什么?在什么时候使用?
2015-07-13 21:27 796字符串内容较长的时候,特别是这个字符串是动态拼接的时候,用 ... -
ActiveMQ的queue以及topic两种消息处理机制
2015-04-14 10:57 5694JMS:Java Message Server JMS消 ... -
Date数据精度问题
2015-03-30 17:04 1339Java数据精度比Oracle精度大,在java端设置Date ... -
springmvc定时任务配置
2015-02-10 11:19 9551.xml配置头中添加 http://www.spring ... -
计算当日剩余时间
2015-02-09 14:06 1034//计算当日剩余时间 private long getCurr ... -
org.springframework.util.StringUtils的应用
2014-07-18 13:40 1413FROM:http://www.myexception.c ... -
CopyOnWriteArrayList理解与理解[转]
2014-05-29 17:18 852FROM:http://www.cnblogs.com/al ... -
sha1withRSA md5withRSA分析
2014-05-16 11:25 6749source:http://m.blog.csdn.net ... -
java的concurrent用法详解
2014-02-24 14:32 976我们都知道,在JDK1.5之前,Java中要进行业务并发时, ... -
Java获取电脑CPU个数及系统信息
2014-02-20 17:49 17595FROM:http://bingoffice.blog.16 ... -
线程池ExecutorService
2014-02-19 17:57 1224声明:本人所有摘抄作者原文只是为方便学习,收藏所用。 为防 ... -
Sola java搜索引擎服务器
2014-01-26 15:56 2324Sola http://www.open-searc ... -
单例模式
2014-01-07 15:50 563/** * 懒汉式 * @author lihongy ... -
Collections.frequency用法实例
2014-01-07 15:31 8043Collections.frequency(Collecti ... -
java Collections工具类用法
2014-01-07 14:54 1031原文:http://www.cnblogs.com/nayi ... -
经典的java中return和finally问题![转]
2013-11-14 15:45 963原文:http://blog.sina.com.cn/s/ ... -
HashMap、LinkedHashMap、TreeMap 差别[转]
2013-10-31 15:24 976HashMap、LinkedHashMap、TreeMap ... -
java compareTo Comparator
2013-07-24 15:25 640compareTo 只是比较2个字符串,不能进行排序Str ...
相关推荐
通过go语言,在线生成、解析pkcs10格式的X509证书请求文件,支持rsa,sm2算法,底层使用openssl开源库。
5. 创建证书请求(CSR,Certificate Signing Request):CSR包含了申请者的公钥和一些标识信息,如组织名、地点等。使用`PKCS10CertificationRequestBuilder`构建CSR,并用私钥进行签名。 6. 签发证书:通常,CSR会...
SM2是一种基于椭圆曲线密码学(ECC)的公钥加密算法,它的安全性比传统的RSA算法更高,但密钥长度更短,因此在计算效率和资源消耗上更具优势。SM2算法包括公钥加密、私钥解密、数字签名和验证等几个核心部分。 接...
可使用此格式,通过ASN1C生成完整的PKCS7签名C语言代码,实现诸如SM2算法数字签名及验证。 注意,CertificateSerialNumber本来在PKCS7标准ASN1结构中定义为INTEGER类型,但由于ASN1C将INTEGER类型翻译成long,不支持...
生成、解释、验算 PKCS#10 证书申请,签名算法支持 SM3withSM2、主流 RSA、DSA、ECDSA.... *** 无须打包 BouncyCastle 支持库,体积小、节约内存 *** 请参阅 testSM.java、testCERT.java 文件列表: 1、AndroidSM...
总结来说,这个压缩包提供了一套JavaScript实现的ECC签名和验证解决方案,包括了与X.509证书、ASN.1编码、RSA兼容性的支持,以及一个基于ECC的SM2算法示例。这使得开发人员能够在浏览器环境中进行安全的非对称加密...
SM2算法则是一种基于椭圆曲线密码学(ECC)的公钥加密和数字签名协议,它结合了椭圆曲线上的离散对数问题和双线性配对技术,提供了安全性和效率的平衡。 首先,SM2密钥交换涉及到两个主要步骤:生成密钥对和密钥...
标题中的“c01_SM3SM4_pkcs11_sm1_龙脉_sm2_源码.zip”指示了这个压缩包包含的是与密码学相关的源代码,主要涉及到SM3、SM4、PKCS11、SM1以及龙脉(可能是指中国的加密技术或算法)和SM2等算法。这些是信息安全领域...
5. **兼容性和适配**:为了保证与其他系统或标准的兼容性,工具类可能还包含了与PKCS#7或CMS(Cryptographic Message Syntax)格式的转换功能,以便于数据交换。 6. **错误处理**:良好的工具类会提供适当的错误...
它包含了对称加密、非对称加密、数字签名等功能,特别适合于移动设备和物联网设备,因为ECC在处理效率和安全性上都优于传统的RSA等算法。 在C#中实现SM2加密和解密,首先需要引入相应的库,如Bouncy Castle,这是一...
RSA数字签名体制是基于RSA公钥加密算法的一种数字签名方法。该方法利用了RSA算法中的私钥和公钥特性。发送方使用自己的私钥对消息进行签名,接收方则使用发送方的公钥来验证签名的有效性。 #### 6.3 基于离散对数的...
常见的公钥算法包括基于大整数因式分解的RSA、基于离散对数问题的Diffie-Hellman、DSA、Elgamal,以及基于椭圆曲线问题的ECC和SM2。公钥密码体系解决了密钥分发的问题,因为公钥可以公开,而私钥仅由拥有者掌握。 ...
- 规范可能涉及PKCS#1标准,这是RSA加密算法的标准格式,用于公钥的编码和解码。 5. **安全性要求** - GMT 0031-2014对系统的安全性提出了严格要求,包括但不限于数据加密、访问控制、日志记录等方面。 - 为了...
- **CA (Certification Authority)**:证书认证机构,负责签发和管理数字证书。 - **CN (Common Name)**:通用名,用于标识实体的名称。 - **CRL (Certificate Revocation List)**:证书撤销列表,列出了已被撤销的...
K宝,也称为USBKey,是一种内置RSA协处理器的智能卡芯片设备,能在芯片内部生成和管理RSA密钥对,私钥始终安全地存储在芯片内部,保证了电子交易的安全性。二代K宝增加了显示屏和物理按键,提高了用户交互体验。通用...
2. **数字签名和证书**:Bouncy Castle支持创建、解析和验证X.509证书,以及多种签名算法,如RSA、DSA、ECDSA等。 3. **PKCS#7/PKCS#12**:这个库可以处理PKCS#7(Cryptographic Message Syntax)和PKCS#12...
苹果一代KEY支持PKI架构,这是一套基于公开密钥密码学原理的、用于管理数字证书和公钥加密的安全体系结构。同时,它还支持标准的CSP(密码服务提供者)和PKCS#11(公钥密码标准#11),后者是一套由RSA实验室制定的...
Bouncy Castle不仅提供了基本的加密操作,如加解密、数字签名和哈希,还支持更高级的功能,如PKCS#7(用于封装和验证数据)、PGP(用于电子邮件加密)以及X.509证书管理。这个库以其灵活、高效和全面的特性,成为了...
苹果二代KEY支持PKI(公钥基础设施)架构,能够与标准的CSP(密码服务提供商)、PKCS#11等协议兼容,为用户提供了一套完整、高效的安全认证体系。此外,产品内部集成了多种算法加速引擎,包括AES、DES/3DES、RSA、...