[Java]读取.RSA密钥信息及获取KEYSTORE指纹信息

本段代码能够读取APK签名中的开发者信息,哈哈,有趣。

感谢曾阳提供的代码。

 

[java]  view plain copy
  1. import sun.security.pkcs.PKCS7;  
  2. import java.io.FileInputStream;  
  3. import java.io.FileNotFoundException;  
  4. import java.io.IOException;  
  5. import java.io.InputStream;  
  6. import java.security.GeneralSecurityException;  
  7. import java.security.cert.X509Certificate;  
  8. public class SignApk {  
  9.     public static X509Certificate readSignatureBlock(InputStream in) throws IOException, GeneralSecurityException {  
  10.         PKCS7 pkcs7 = new PKCS7(in);  
  11.         return pkcs7.getCertificates()[0];  
  12.     }  
  13.     public static void main(String[] args) throws FileNotFoundException, IOException, GeneralSecurityException {  
  14.         X509Certificate publicKey = readSignatureBlock(new FileInputStream("./CERT.RSA"));  
  15.         System.out.println("issuer:" + publicKey.getIssuerDN());  
  16.         System.out.println("subject:" + publicKey.getSubjectDN());  
  17.         System.out.println(publicKey.getPublicKey());  
  18.     }  
  19. }  

 

 

输出如下:

[java]  view plain copy
  1. issuer:CN=Sodino  
  2. subject:CN=SodinoChen  
  3. Sun RSA public key, 1024 bits  
  4.   modulus: 154308594144468705348294760484396264219304223307125368116140288659005422830114898674784044956357283073098453132761265419031547660249768235885852151387544779929680291539693130807734777897342583741160281523340554669518353638961667015615312475350767041053961957188628650343640790505255765999004862716823611888529  
  5.   public exponent: 65537  

 

另外,使用如下命令也可读出指定APK包的签名信息:

 

[java]  view plain copy
  1. jarsigner -verify -verbose -certs <your_apk_path.apk>  

 

再者,对于一个keystore的指纹信息获取可以用如下命令:

[java]  view plain copy
  1. D:/>keytool -list -alias alias_name -keystore keystore_name.KEYSTORE  
  2. 输入keystore密码:  
  3. sodino_keystore, 2010-8-9, PrivateKeyEntry,  
  4. 认证指纹 (MD5): CB:5E:F5:33:23:F4:D2:D3:CC:74:9D:BF:14:36:EB:8D  

 

在Linux下,也可以使用openssl命令来获取:

[java]  view plain copy
  1. $ openssl pkcs7 -in CERT.RSA -inform DER -print_certs  
  2. subject=/C=US/ST=California/L=Mountain View/O=Android/OU=Android/CN=Android/emailAddress=android@an  
  3. roid.com  
  4. issuer=/C=US/ST=California/L=Mountain View/O=Android/OU=Android/CN=Android/emailAddress=android@and  
  5. oid.com  
  6. -----BEGIN CERTIFICATE-----  
  7. MIIEqDCCA5CgAwIBAgIJALOZgIbQVs/6MA0GCSqGSIb3DQEBBAUAMIGUMQswCQYD  
  8. VQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4g  
  9. VmlldzEQMA4GA1UEChMHQW5kcm9pZDEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UE  
  10. AxMHQW5kcm9pZDEiMCAGCSqGSIb3DQEJARYTYW5kcm9pZEBhbmRyb2lkLmNvbTAe  
  11. Fw0wODA0MTUyMjQwNTBaFw0zNTA5MDEyMjQwNTBaMIGUMQswCQYDVQQGEwJVUzET  
  12. MBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEQMA4G  
  13. A1UEChMHQW5kcm9pZDEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9p  
  14. ZDEiMCAGCSqGSIb3DQEJARYTYW5kcm9pZEBhbmRyb2lkLmNvbTCCASAwDQYJKoZI  
  15. hvcNAQEBBQADggENADCCAQgCggEBAJx4BZKsDV04HN6qZezIpgBuNkgMbXIHsSAR  
  16. vlCGOqvitV0Amt9xRtbyICKAx81Ne9smJDuKgGwms0sTdSOkkmgiSQTcAUk+fArP  
  17. GgXIdPabA3tgMJ2QdNJCgOFrrSqHNDYZUer3KkgtCbIEsYdeEqyYwap3PWgAuer9  
  18. 5W1Yvtjo2hb5o2AJnDeoNKbf7be2tEoEngeiafzPLFSW8s821k35CjuNjzSjuqtM  
  19. 9TNxqydxmzulh1StDFP8FOHbRdUeI0+76TybpO35zlQmE1DsU1YHv2mi/0qgfbX3  
  20. 6iANCabBtJ4hQC+J7RGQiTqrWpGA8VLoL4WkV1PPX8GQccXuyCcCAQOjgfwwgfkw  
  21. HQYDVR0OBBYEFE/koLPdnLop9x1yh8Tnw48ghsKZMIHJBgNVHSMEgcEwgb6AFE/k  
  22. oLPdnLop9x1yh8Tnw48ghsKZoYGapIGXMIGUMQswCQYDVQQGEwJVUzETMBEGA1UE  
  23. CBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEQMA4GA1UEChMH  
  24. QW5kcm9pZDEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDEiMCAG  
  25. CSqGSIb3DQEJARYTYW5kcm9pZEBhbmRyb2lkLmNvbYIJALOZgIbQVs/6MAwGA1Ud  
  26. EwQFMAMBAf8wDQYJKoZIhvcNAQEEBQADggEBAFclUbjZOh9z3g9tRp+G2tZwFAAp  
  27. PIigzXzXeLc9r8wZf6t25iEuVsHHYc/EL9cz3lLFCuCIFM78CjtaGkNGBU2Cnx2C  
  28. tCsgSL+ItdFJKe+F9g7dEtctVWV+IuPoXQTIMdYT0Zk4u4mCJH+jISVroS0dao+S  
  29. 6h2xw3Mxe6DAN/DRr/ZFrvIkl5+6bnoUvAJccbmBOM7z3fwFlhfPJIRc97QNY4L3  
  30. J17XOElatuWTG5QhdlxJG3L7aOCA29tYwgKdNHyLMozkPvaosVUz7fvpib1qSN1L  
  31. IC7alMarjdW4OZID2q4u1EYjLk/pvZYTlMYwDlE448/Shebk5INTjLixs1c=  
  32. -----END CERTIFICATE-----  

 

本文内容归CSDN博客博主Sodino 所有
转载请注明出处:http://blog.csdn.net/sodino/archive/2011/01/18/6149706.aspx

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值