zoukankan      html  css  js  c++  java
  • android 创建数字签名应用程序

    一些人说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 <密钥口令>  -keyalg Test -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");

    说明:大体是这个步骤,具体还有一些细节代码没有粘贴。


     

  • 相关阅读:
    http_build_query(array) 中文乱码问题
    蒙层
    git删除本地和线上分支
    小程序Storage记录用户身份
    PHPExcel Allowed memory size of 内存泄漏解决办法
    抽奖帮助类
    linux查询并删除文件
    微信公众号H5,分享朋友,分享朋友圈处理
    mysql备份数据方式
    shell监控文件变化
  • 原文地址:https://www.cnblogs.com/lgzh3/p/2327181.html
Copyright © 2011-2022 走看看