通过android应用获取第三方应用签名的源码
2016-03-04 11:12
447 查看
前言
以下代码,运行在Android上可以通过第三方的包名来获取第三方应用的MD5签名。private Signature[] getRawSignature(Context paramContext, String paramString) { if ((paramString == null) || (paramString.length() == 0)) { errout("getSignature, packageName is null"); return null; } PackageManager localPackageManager = paramContext.getPackageManager(); PackageInfo localPackageInfo; try { localPackageInfo = localPackageManager.getPackageInfo(paramString, 64); if (localPackageInfo == null) { errout("info is null, packageName = " + paramString); return null; } } catch (PackageManager.NameNotFoundException localNameNotFoundException) { errout("NameNotFoundException"); return null; } return localPackageInfo.signatures; } /** *paramString:第三方android应用的包名 */ private String getSign(String paramString) { Signature[] arrayOfSignature = getRawSignature(this, paramString); if ((arrayOfSignature == null) || (arrayOfSignature.length == 0)) { errout("signs is null"); } StringBuffer sign = new StringBuffer(); while (true) { return; int i = arrayOfSignature.length; for (int j = 0; j < i; j++) sign.append(MD5.getMessageDigest(arrayOfSignature[j].toByteArray())); } return sign.toString(); }
MD5加密代码:
import java.security.MessageDigest; public final class MD5 { public static final String getMessageDigest(byte[] paramArrayOfByte) { char[] arrayOfChar1 = { 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 97, 98, 99, 100, 101, 102 }; try { MessageDigest localMessageDigest = MessageDigest.getInstance("MD5"); localMessageDigest.update(paramArrayOfByte); byte[] arrayOfByte = localMessageDigest.digest(); int i = arrayOfByte.length; char[] arrayOfChar2 = new char[i * 2]; int j = 0; int k = 0; while (true) { if (j >= i) { return new String(arrayOfChar2); } int m = arrayOfByte[j]; int n = k + 1; arrayOfChar2[k] = arrayOfChar1[(0xF & m >>> 4)]; k = n + 1; arrayOfChar2 = arrayOfChar1[(m & 0xF)]; j++; } } catch (Exception localException) { } return null; } public static final byte[] getRawDigest(byte[] paramArrayOfByte) { try { MessageDigest localMessageDigest = MessageDigest.getInstance("MD5"); localMessageDigest.update(paramArrayOfByte); byte[] arrayOfByte = localMessageDigest.digest(); return arrayOfByte; } catch (Exception localException) { } return null; } }
通过命令行获取签名MD5
第一步、打开Android Studio的Tools->Open Terminal.. 或者是在cmd命令窗口中操作。 第二步、输入命令:keytool -v -list -keystore keystore.jks keytool这个命令,来自于jdk。
来源于:日积月累–AndroidStudio使用技巧
相关文章推荐
- 使用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