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

文章出自https://blog.csdn.net/u011068702/article/details/76531675

 

1、把pfx证书文件放入sdcard

 

adb push    ***.pfx /sdcard/

 

 

 

 

 

2、解析获取公钥和私钥

 

 
  1. //证书解析

  2. String path = Environment.getExternalStorageDirectory().getPath() + "/sim_shield.pfx";

  3.  
  4. public static Map<String, byte[]> parsePfx(String pfxPath, String pwd) {

  5. Map<String, byte[]> keyMap = new HashMap<String, byte[]>();

  6. try {

  7. KeyStore ks = KeyStore.getInstance("PKCS12");

  8. FileInputStream fis = null;

  9. try {

  10. fis = new FileInputStream(pfxPath);

  11. } catch (Exception e) {

  12. Log.i("sss", "new FileInputStream fail");

  13. }

  14. char[] nPassword = pwd.toCharArray();

  15. ks.load(fis, nPassword);

  16. fis.close();

  17.  
  18. Enumeration<String> aliases = ks.aliases();

  19. String keyAlias = null;

  20. PrivateKey prikey = null;

  21. while (true) {

  22. try {

  23. keyAlias = aliases.nextElement();

  24. prikey = (PrivateKey) ks.getKey(keyAlias, nPassword);

  25. if (null != prikey) {

  26. break;

  27. } else {

  28. Log.i("sss", "prikey is null");

  29. }

  30. } catch (NoSuchElementException e) {

  31. Log.i("sss", "NoSuchElementException");

  32. return null;

  33. }

  34. }

  35. Certificate cert = (Certificate) ks.getCertificate(keyAlias);

  36. Log.i("sss", "while after");

  37. if (null != prikey && prikey.getEncoded().length > 0) {

  38. keyMap.put(PRI_KEY, prikey.getEncoded());

  39. Log.i("sss", "private_key is :" + prikey.getEncoded());

  40. } else {

  41. Log.i("sss", "private_key is null");

  42. }

  43. Log.i("sss", "prikey after");

  44. if (null != cert && cert.getEncoded().length > 0) {

  45. keyMap.put(PUB_KEY, cert.getEncoded());

  46. Log.i("sss", "PUBKIC_KEY is :" + cert.getEncoded());

  47. } else {

  48. Log.i("sss", "public_key is null");

  49. }

  50. return keyMap;

  51. }

  52. catch (Exception e) {

  53. Log.i("sss", "parsePfx will return null");

  54. return null;

  55. }

  56. }


 

 

 

3、加上权限

 

 
  1. <uses-permission android:name="android.permission.READ_PHONE_STATE" />

  2. <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

  3. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

  4. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值