一些人说android只支持BKS证书。不知道真还是假,所以首先创建了BKS证书。

步骤:

1、下载bcprov-jdk16-141.jar,放到\jre\lib\ext目录下

2、修改文件 jre6\lib\security\java.security, 在文件中添加: security.provider.10=org.bouncycastle.jce.provider.BouncyCastleProvider

在这个文件中找到security.provider字样,后面序号递增,本机递增到10

3、创建keystore。命令:

keytool -genkey -alias <别名> -keypass <密钥口令> -keyalgTest -keysize 1024 -validity 365 -keystore <库文件名,如runcerts.keystore> -storepass <证书库密码> -dname "cn=testUsr, ou=产品部, o=XXX公司, c=CN, S=shandong" -storetype BKS -provider org.bouncycastle.jce.provider.BouncyCastleProvider

4、签名及验证

//读取密钥库:

FileInputStream is=new FileInputStream("C:\\Inetpub\\runcerts.keystore");
KeyStore ks=KeyStore.getInstance("BKS","BC");
ks.load(is,"123456".toCharArray());
is.close();

//读取私钥
PrivateKey priKey1=(PrivateKey)ks.getKey("test2", "123456".toCharArray());
privateKeyString =getKeyString(priKey1);

//签名
SignText=DataSign(plainText,privateKeyString);

//以下验证
//获得证书

Certificate certificate=ks.getCertificate("test2");
//获得证书
PublicKey publicKey1=certificate.getPublicKey();

publicKeyString=getKeyString(publicKey1);

//验证
byte[]plainText1="Happy New Year!!Email:@qq.com".getBytes();
boolean verySign=verify(plainText1,publicKeyString,SignText);
String s2 = new Boolean(verySign).toString();
System.out.print("验证结果:"+s2+"/n");

更多相关文章

  1. Android之HttpsURLConnection访问网络(android https协议)
  2. android.intent.action.MAIN 与 android.intent.category.LAUNCH
  3. Android数字签名获取证书指纹(SHA1)
  4. Android签名验证简介
  5. Android(安卓)Studio 默认debug证书位置在哪里(Mac os)
  6. android后台运行服务,加验证
  7. Android如何通过https协议下载自己的https网站上的文件/apk等
  8. Android数字签名
  9. android随机生成验证码

随机推荐

  1. Android系统深度游
  2. Android之UI设计TextView属性
  3. [Android]电话拨号器开发
  4. 学习Android界面设计的超级利器Hierarchy
  5. Android设计模式系列(3)--SDK源码之单例
  6. Android 开发实践 Lambda表达式的使用
  7. android开发老罗教学视频
  8. h5页面与Android原生页面交互
  9. Google Inbox如何跨平台重用代码?
  10. Android系统介绍与框架