java sm_Java国密SM2/SM3/SM4及证书
1. 使用BC库1.59版本已经可以支持国密算法SM2/SM3/SM4,某大神写的详细测试例子:https://github.com/ZZMarquis/gmhelper
2. 制作证书参考网上资料简单例子;
``` java
public static void genSM2CertBySelf() throws OperatorCreationException, IOException, CertificateException {
String dn = "CN=dfg, OU=aert, O=45y, L=sdfg, ST=fg, C=CN";
long year = 360 * 24 * 60 * 60 * 1000;
Date notBefore = new Date();
Date notAfter = new Date(notBefore.getTime() + year);
//证书的名称
String fileName = "self"+new Date().getTime()/1000;
String path = "/test/gmhelper/";
String rootCertPath = path+fileName+".der";
AsymmetricCipherKeyPair kp = Sm2Util.generateKeyPair();
ECPrivateKeyParameters bcecPrivateKey = (ECPrivateKeyParameters)kp.getPrivate();
ECPublicKeyParameters bcecPublicKey = (ECPublicKeyParameters)kp.getPublic();
BcX509v3CertificateBuilder build = new BcX509v3CertificateBuilder(
new X500Name(dn),
BigInteger.probablePrime(64, new Random()),
notBefore,
notAfter,
new X500Name(dn),
bcecPublicKey);
AlgorithmIdentifier sigAlgId = new DefaultSignatureAlgorithmIdentifierFinder().find("SM3withSM2");//即"1.2.156.10197.1.501"
AlgorithmIdentifier digAlgId = new DefaultDigestAlgorithmIdentifierFinder().find("SHA256");
ContentSigner sigGen = new BcECContentSignerBuilder(sigAlgId, digAlgId).build(bcecPrivateKey);
X509CertificateHolder x509certHolder = build.build(sigGen);
FileOutputStream outputStream = new FileOutputStream(rootCertPath);
outputStream.write(x509certHolder.getEncoded());
outputStream.close();
}
```
3. 使用上面介绍的制作证书方法如果跟GMSSL生成的证书比对缺少“公钥参数”对象,因为BC库公钥是采用X9.62格式,见rfc5349 https://tools.ietf.org/html/rfc5349 ; 如果一定要带公钥参数对象,代码去处理下ASN.1,把BcX509v3CertificateBuilder修改为X509v3CertificateBuilder,公钥通过createSubjectECPublicKeyInfo做下转换
``` java
public static SubjectPublicKeyInfo createSubjectECPublicKeyInfo(ECPublicKeyParameters pub)
{
ASN1OctetString p = (ASN1OctetString)new X9ECPoint(pub.getQ()).toASN1Primitive();
return new SubjectPublicKeyInfo(new AlgorithmIdentifier(X9ObjectIdentifiers.id_ecPublicKey, GMObjectIdentifiers.sm2p256v1), p.getOctets());
}
```
4. 自己如何构造公钥参数ECPublicKeyParameters参考:http://linuxgao.iteye.com/blog/2389904 如果要构造私钥参数类似如此操作,更简单,因为私钥参数ECPrivateKeyParameters只有一个大数BigInteger
5. 证书解析参考:https://blog.csdn.net/qq_32221419/article/details/59111828
6、证书请求及其它:参考 http://www.sitcoder.com/?post=54 和
https://blog.csdn.net/jinhill/article/details/17612273
java sm_Java国密SM2/SM3/SM4及证书相关推荐
- 国密SM2,SM3,SM4的前后台(js和java)加解密写法
目录 SM2加解密 js java SM3加密 js java sm3前后台(js/java)加密不一致原因 SM4加解密 js java 之前做一个项目的时候需要用到国密SM2,SM3,SM4的加解 ...
- php gmssl,支持国密SM2/SM3/SM4/SM9/ZUC/SSL的密码工具箱GmSSL
GmSSL概述 GmSSL是一个开源的密码工具箱,支持SM2/SM3/SM4/SM9/ZUC等国密(国家商用密码)算法.SM2国密数字证书及基于SM2证书的SSL/TLS安全通信协议,支持国密硬件密码 ...
- OpenSSL 1.1.1 新特性: 全面支持国密SM2/SM3/SM4加密算法
OpenSSL项目最近6个月添加了许多新特性, 包括对中国SM2/SM3/SM4算法的支持: SM2椭圆曲线: https://github.com/openssl/openssl/pull/4793 ...
- 国密 sm2,sm3,sm4 算法纯 JavaScript 实现
2014 年国务院办公厅就颁发了<国务院办公厅转发密码局等部门关于金融领域密码应用指导意见>,指出在我国涉及到金融领域信息安全的产品和系统要自主可控,在金融领域使用国产加密标准是机构走向合 ...
- java sm9_一个支持国密SM2/SM3/SM4/SM9/ZUC/SSL的密码工具箱
The GmSSL Project 网址:http://gmssl.org/docs/quickstart.html 在网上闲逛时发现一个工具.SSL支持国密算法.看着比较高大上.还没有用呢.记下来. ...
- 通过网页查看服务器算法,服务器使用国密(SM2/SM3/SM4)证书,通过浏览器访问
1. Apache + Gmssl Apache 本身不支持国密,需要修改代码支持GMTLS 下载解压: wget http://archive.apache.org/dist/httpd/httpd ...
- 服务器使用国密(SM2/SM3/SM4)证书,通过浏览器访问
1. Apache + Gmssl Apache 本身不支持国密,需要修改代码支持GMTLS 下载解压: wget http://archive.apache.org/dist/httpd/httpd ...
- PB实现国密SM2/SM3/SM4算法(DLL方式)
文章目录 SM4 SM4简介 分组加密模式ECB与CBC ECB模式加密解密 CBC模式加密解密 SM3 SM3简介 SM3摘要生成 SM3WithSM2摘要生成 SM2 SM2简介 SM2签名与验签 ...
- Java实现基于国密SM2、SM4生成证书密钥进行字串的加解密
目录 流程说明: DTO层 生成证书密钥所需参数封装类 最终密文封装类 controller层 service层 serviceImp层 加密工具类 测试 发送生成证书请求 发送生成密文请求 发送解读 ...
最新文章
- 树上问题 ---- E. Fib-tree(斐波那契数的性质 + 暴力模拟 + 认真计算复杂度)
- MMDetection V2.0:更快更强的通用目标检测平台
- ​iOS 9音频应用播放音频之第一个ios9音频实例2
- c语言利用文件体写在桌面上,在C语言中怎样新建一个文件夹?
- vue----sourceMap
- python程序间通信_python进程间通信Queue工作过程详解
- CUDA学习(二十九)
- linux 下tftp服务器搭建,CentOS 6下搭建TFTP服务器
- AI人工智能技术还原康乾盛世三代皇帝样貌,太帅了!
- 阿里云域名部署免费证书,开启https访问。
- 低功耗蓝牙开发权威指南--第三部分 主机 (第9-12章)
- 基于stm32的智能语音提醒器
- 台达PLC与单片机的通讯
- mybatisPlus中getOne方法如何只取其中一条数据(Wrapper有多条数据时)
- 用python制作简单的二维码生成器
- 阿里云云服务器使用须知(全套详解)
- 小白建网站,该如何入手?
- iPhone模拟定位(非越狱修改手机定位)
- 项目管理中的进度与成本控制
- Java JDK (SE)安装详细教程