若是apk
使用解压工具解压 APK 文件,在 META-INF 文件夹拿到 CERT.RSA 文件。
假设 CERT.RSA 文件的路径是 D:\GetOn\ceshi\release\CERT.RSA
在 CMD 中输入
keytool -printcert -file D:\GetOn\ceshi\release\CERT.RSA
就可以得到签名信息了,MD5值
若是签名文件
jks文件
jks 作为签名文件,也可以通过命令行来查看的其中的签名信息,假设签名文件的位置是D:\GetOn\ceshi\release\test_release.jks
在终端中输入
keytool -list -v -keystore D:\GetOn\ceshi\release\test_release.jks
keystore文件
还可以根据代码获取
public class ApplySigningUtils {
/**
* 获取应用签名
*
* @param context
* @param packageName
* @return
*/
public static String getRawSignatureStr(Context context, String packageName) {
try {
Signature[] signs = getRawSignature(context, packageName);
String signValidString = getSignValidString(signs[0].toByteArray());
return signValidString;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public static Signature[] getRawSignature(Context context, String packageName) {
if (packageName == null || packageName.length() == 0) {
return null;
}
try {
PackageInfo info = context.getPackageManager().getPackageInfo(packageName, PackageManager.GET_SIGNATURES);
if (info != null) {
return info.signatures;
}
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
return null;
}
private static String getSignValidString(byte[] paramArrayOfByte) throws NoSuchAlgorithmException {
MessageDigest localMessageDigest = MessageDigest.getInstance("MD5");
localMessageDigest.update(paramArrayOfByte);
return toHexString(localMessageDigest.digest());
}
private static String toHexString(byte[] paramArrayOfByte) {
if (paramArrayOfByte == null) {
return null;
}
StringBuilder localStringBuilder = new StringBuilder(2 * paramArrayOfByte.length);
for (int i = 0; ; i++) {
if (i >= paramArrayOfByte.length) {
return localStringBuilder.toString();
}
String str = Integer.toString(0xFF & paramArrayOfByte[i], 16);
if (str.length() == 1) {
str = "0" + str;
}
localStringBuilder.append(str);
}
}
}
写一个activity 在onCreate调用签名工具类(注:直接运行获取到的签名是调试模式下的)
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String s = ApplySigningUtils.getRawSignatureStr(this,getPackageName());
Log.d("应用签名:",""+ s);
}
}
使用第三方平台提供的签名工具
比如微信
一般是去开放平台下载生成签名的apk,安装到手机。工具下载链接
输入要查询的apk的包名即可
参考链接
http://e.betheme.net/zz/235814.aspx?action=onClick
https://blog.csdn.net/m0_60746014/article/details/125432176