资源简介
Android SM2、SM3、SM4 算法支持 Service Provider 及证书制作软件包
国密算法 JCAJCE Service Provider,适应版本 Android 4.2.2~7.0
支持 SM2 的 KeyFactory、KeyPairGenerator、Cipher、Signature、X.509 CertificateFactory 接口
支持 SM3 的 MessageDigest 接口、SM3withSM2 混合算法
支持 SM4 的 Cipher、KeyFactory、KeyGenerator、SecretKey 接口、相关算法 CMAC-SM4、Poly1305-SM4
增加 java.security.PublicKey 的子类 SM2PublicKey
增加 java.security.PrivateKey 的子类 SM2PrivateKey
全功能支持 SM3withSM2 算法的 X.509 证书结构体解释与密码运算
支持 BKS、PKCS#12 KeyStore
生成、解释、验算 X.509v1/v3 证书,签名算法支持 SM3withSM2、主流 RSA、DSA、ECDSA....
生成、解释、验算 PKCS#10 证书申请,签名算法支持 SM3withSM2、主流 RSA、DSA、ECDSA....
*** 无须打包 BouncyCastle 支持库,体积小、节约内存 ***
请参阅 testSM.java、testCERT.java
文件列表:
1、AndroidSM.jar -- SM2、SM3、SM4 算法/证书支持的 JCA/JCE Service Provider 类库
2、AndroidCRT.jar -- X.509 数字证书/PKCS#10 证书申请相关类库
3、bc422.jar -- BouncyCastle 加密库,Android 4.2.2 内置版本(由真机导出dex文件转换而得,仅用于编译时选用,勿打包到apk文件中)
4、testSM.java -- SM2、SM3、SM4 算法相关类引用范例
5、testCERT.java -- X.509 数字证书/PKCS#10 证书申请相关类引用范例
6、readme.txt -- 本文
因条件及精力限制,各类、方法的实现未经严格彻底的测试,不宜用于商业用途软件的开发。
如欲将本开发包发布、上传、拷贝、共享等,务必保持其内容完整性(包括本文)
如有需要帮助或者索取源码,请联系 suntongo@qq.com, suntongo@hotmail.com
代码片段和文件信息
package org.suntongo.cert;
import android.util.base64;
import com.android.org.bouncycastle.asn1.x509.KeyPurposeId;
import org.bouncycastle.asn1.x509.BasicConstraints;
import org.bouncycastle.asn1.x509.ExtendedKeyUsage;
import org.bouncycastle.asn1.x509.Extension;
import org.bouncycastle.asn1.x509.KeyUsage;
import org.bouncycastle.cert.CertException;
import org.bouncycastle.cert.CertIOException;
import org.bouncycastle.cert.X509CertificateHolder;
import org.bouncycastle.operator.ContentSigner;
import org.bouncycastle.operator.ContentSignerBuilder;
import org.bouncycastle.operator.ContentVerifierProvider;
import org.bouncycastle.operator.OperatorCreationException;
import org.bouncycastle.operator.X509CertificateConverter;
import org.bouncycastle.pkcs10.PKCS10CertificationRequest;
import org.bouncycastle.pkcs10.PKCSException;
import org.suntongo.cert.NameBuilder.RDN;
import org.suntongo.gm.provider.SMProvider;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.math.BigInteger;
import java.security.GeneralSecurityException;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.NoSuchAlgorithmException;
import java.security.PrivateKey;
import java.security.Provider;
import java.security.PublicKey;
import java.security.SecureRandom;
import java.security.Security;
import java.security.cert.CertificateException;
import java.security.cert.CertificateFactory;
import java.security.cert.X509Certificate;
import java.util.Date;
import javax.security.auth.x500.X500Principal;
/**
* testCERT
*/
public class testCERT {
public static void addProvider() {
Provider prvdr = Security.getProvider(“SM“);
if (prvdr == null) {
prvdr = new SMProvider();
Security.addProvider(prvdr);
}
}
private static KeyPair genSM2KeyPair() throws NoSuchAlgorithmException {
KeyPairGenerator kpg;
try { kpg = KeyPairGenerator.getInstance(“SM2“);}
catch (NoSuchAlgorithmException e) {
addProvider();
kpg = KeyPairGenerator.getInstance(“SM2“);
}
/* You can also initialize the generator with a random source if needed. */
//kpg.initialize(256 new SecureRandom());
return kpg.generateKeyPair();
}
public static String testCRT1() throws NoSuchAlgorithmException
OperatorCreationException CertificateException CertException {
StringBuilder sb = new StringBuilder();
SecureRandom apRandom = new SecureRandom();
NameBuilder nb = new NameBuilder(RDN.INSTANCE);
nb.addRDN(RDN.CN “Suntongo“);
nb.addRDN(RDN.E “suntongo@qq.com“);
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance(“RSA“);
keyPairGenerator.initialize(1024);
KeyPair keyPair = keyPairGenerator.generateKeyPair();
X500Principal me = nb.toName();
B
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 91063 2016-08-13 11:57 AndroidCRT.jar
文件 108993 2016-08-13 11:59 AndroidSM.jar
文件 1007256 2016-07-16 06:25 bc422.jar
文件 1508 2016-08-13 12:03 readme.txt
文件 9041 2016-08-13 11:41 testCERT.java
文件 9845 2016-08-13 11:42 testSM.java
- 上一篇:java j2ee 课程设计报告
- 下一篇:文件管理器 Android文件管理器
相关资源
- Android代码-多功能拨号盘源码.zip
- printershare直接破解版--11.5(适配andr
- android RDP远程桌面客户端源码
- 手机远程控制手机android
- spring boot+ios app+android app 即时通讯项目
- Androidrepo文件
- Aandroid 多线程断点续传同时多个大文
- Vue项目实现手机端上传图片,使用于
- Android多文件断点续传
- Android多线程文件夹及断点续传
- android 安卓 FTP 文件 管理
- Android-5.1.1_r1源码.7z
- mac版adb工具
- NFC Card万能读卡android程序
- Android直连Mysql数据库需要导入的jar包
- android实现谷歌地图项目
- Android日历239876
- 主页面框架
- Android双列滑动表格(双表头不动)
- android绘制心电图
- Android安卓中文API开发文档参考手册官
- Android开发的UI图标大全
- Crypto++ 7.0.0 for Android 已编译
- Android手机通过otg线外接usb摄像头
- AndroidStudio使用svn第一次提交忽略文件
- Android编程设计模式之原型模式详解
- 浅谈Android客户端与服务器的数据交互
- 基于android框架的客户端和基于java服务
- 好用的支持android 6.0以上的libserial_p
- AndroidStudio插件配置
评论
共有 条评论