Java文件名为SignUtil
package 你的包名;
import java.lang.*;
import com.sign.R;
import java.io.InputStream;
import java.security.cert.Certificate;
import java.security.cert.CertificateFactory;
import java.security.cert.X509Certificate;
import java.util.Base64;
import java.util.Collection;
import java.util.Enumeration;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
public class SignUtil {
public static String getSignature(String apkFilePath) {
try {
ZipFile zipFile = new ZipFile(apkFilePath);
Enumeration entries = zipFile.entries();
while (entries.hasMoreElements()) {
ZipEntry entry = entries.nextElement();
if (entry.getName().matches(“(META-INF/.*)\\.(RSA|DSA|EC)”)) {
InputStream is = zipFile.getInputStream(entry);
CertificateFactory certFactory = CertificateFactory.getInstance(“X509”);
Collection certificates = certFactory.generateCertificates(is);
for (Certificate certificate : certificates) {
if (certificate instanceof X509Certificate) {
X509Certificate x509Cert = (X509Certificate) certificate;
byte[] signature = x509Cert.getEncoded();
String encodeToString = Base64.getEncoder().encodeToString(signature);
zipFile.close();
return encodeToString;
}
}
continue;
}
}
zipFile.close();
return null;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
public static String getName(String apkFilePath) {
try {
ZipFile zipFile = new ZipFile(apkFilePath);
Enumeration entries = zipFile.entries();
while (entries.hasMoreElements()) {
ZipEntry entry = entries.nextElement();
String entryName = entry.getName();
if (entryName.matches(“(META-INF/.*)\\.(RSA|DSA|EC)”)) {
String signatureFileName = entryName.substring(entryName.lastIndexOf(47) + 1);
int dotIndex = signatureFileName.lastIndexOf(46);
if (dotIndex == -1) {
zipFile.close();
return signatureFileName;
}
String substring = signatureFileName.substring(0, dotIndex);
zipFile.close();
return substring;
}
}
zipFile.close();
return null;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}
调用代码
s apkpath = “你的apk文件路径”
string sign = java SignUtil.getSignature(apkpath)
gj.sc(sign)