Android之获取证书文件(pfx格式)的公钥和私钥

来源:互联网 发布:淘宝嘉定仓库 编辑:程序博客网 时间:2024/05/08 20:16

1、把pfx证书文件放入sdcard

adb push    ***.pfx /sdcard/




2、解析获取公钥和私钥

//证书解析String path = Environment.getExternalStorageDirectory().getPath() + "/sim_shield.pfx";   public static Map<String, byte[]> parsePfx(String pfxPath, String pwd) {    Map<String, byte[]> keyMap = new HashMap<String, byte[]>();     try {             KeyStore ks = KeyStore.getInstance("PKCS12");             FileInputStream fis = null;             try {             fis = new FileInputStream(pfxPath);             } catch (Exception e) {             Log.i("sss", "new FileInputStream fail");             }             char[] nPassword = pwd.toCharArray();             ks.load(fis, nPassword);             fis.close();             Enumeration<String> aliases = ks.aliases();             String keyAlias = null;             PrivateKey prikey = null;             while (true) {             try {               keyAlias = aliases.nextElement();                 prikey = (PrivateKey) ks.getKey(keyAlias, nPassword);                 if (null != prikey) {                 break;                 } else {                 Log.i("sss", "prikey is null");                 }              } catch (NoSuchElementException e) {             Log.i("sss", "NoSuchElementException");             return null;             }             }             Certificate cert = (Certificate) ks.getCertificate(keyAlias);             Log.i("sss", "while after");             if (null !=  prikey && prikey.getEncoded().length > 0) {             keyMap.put(PRI_KEY, prikey.getEncoded());             Log.i("sss", "private_key is :" + prikey.getEncoded());             } else {             Log.i("sss", "private_key is null");             }             Log.i("sss", "prikey after");             if (null !=  cert && cert.getEncoded().length > 0) {             keyMap.put(PUB_KEY, cert.getEncoded());             Log.i("sss", "PUBKIC_KEY is :" + cert.getEncoded());             } else {             Log.i("sss", "public_key is null");             }             return keyMap;         }      catch (Exception e)  {      Log.i("sss", "parsePfx will return null");     return null;      }  }




3、加上权限

    <uses-permission android:name="android.permission.READ_PHONE_STATE" />    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />




阅读全文
0 0
原创粉丝点击