android读取应用签名信息
2015-12-08 19:31
495 查看
1.命令方式
$ keytool -list -v -keystore "keystore文件路径"
输入以上命令,需要输入签名文件口令(密码请联系开发人员)即可查看。
2.本应用内实现方式
调用getCertificateFingerprint方法,type为”MD5”,”SHA1”,”SHA256”。返回值为签名指纹对应类型串。
/** * * @param context * @param type * [MD5,SHA1,SHA256] * @return */ public static String getCertificateFingerprint(Context context, String type) { // 获取包管理器 PackageManager pm = context.getPackageManager(); // 在用其他包名的前提是,此方法传递的参数Context应该是对应包的上下文。 String packageName = context.getPackageName();// 这里也可直接使用指定包名 // 返回包括在包中的签名信息 int flags = PackageManager.GET_SIGNATURES; PackageInfo packageInfo = null; try { // 获得包的所有内容信息类 packageInfo = pm.getPackageInfo(packageName, flags); } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); } // 签名信息 Signature[] signatures = packageInfo.signatures; byte[] cert = signatures[0].toByteArray(); // 将签名转换为字节数组流 InputStream input = new ByteArrayInputStream(cert); // 证书工厂类,这个类实现了出厂合格证算法的功能 CertificateFactory cf = null; try { cf = CertificateFactory.getInstance("X509"); } catch (CertificateException e) { e.printStackTrace(); } // X509证书,X.509是一种非常通用的证书格式 X509Certificate c = null; try { c = (X509Certificate) cf.generateCertificate(input); } catch (CertificateException e) { e.printStackTrace(); } String hexString = null; try { // 加密算法的类,这里的参数可以使MD4,MD5,SHA1等加密算法 MessageDigest md = MessageDigest.getInstance(type); // 获得公钥 byte[] publicKey = md.digest(c.getEncoded()); // 字节到十六进制的格式转换 hexString = byte2HexFormatted(publicKey); } catch (NoSuchAlgorithmException e1) { e1.printStackTrace(); } catch (CertificateEncodingException e) { e.printStackTrace(); } return hexString; } /** * 将获取到得编码进行16进制转换 * * @param arr * @return */ private static String byte2HexFormatted(byte[] arr) { StringBuilder str = new StringBuilder(arr.length * 2); for (int i = 0; i < arr.length; i++) { String h = Integer.toHexString(arr[i]); int l = h.length(); if (l == 1) h = "0" + h; if (l > 2) h = h.substring(l - 2, l); // 这里做了大写转换处理,比较时请转换或者使用IgnoreCase忽略大小写 str.append(h.toUpperCase()); if (i < (arr.length - 1)) str.append(':'); } return str.toString(); }
其他
\.android\debug.keystore的密码是
android
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories