How To Read Sha And Md5 Fingerprint Programmatically In Android
Hello I want to read SHA and MD5 fingerprint value of keystore programmatically of my app from which it was signed. I'll take either SHA or MD5 value as key for security. This key
Solution 1:
PackageInfo info;
try {
info = getPackageManager().getPackageInfo(
"com.your.package.name", PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md;
md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
String hash_key = newString(Base64.encode(md.digest(), 0));
}
} catch (NameNotFoundException e1) {
} catch (NoSuchAlgorithmException e) {
} catch (Exception e) {
}
Solution 2:
try this:
/**
*
* @param pkg packageName
* @return
*/public String getSingInfo(String pkg) {
try {
PackageInfopackageInfo= getPackageManager().getPackageInfo(pkg, PackageManager.GET_SIGNATURES);
Signature[] signs = packageInfo.signatures;
Signaturesign= signs[0];
Strings= getMd5(sign);
return"md5:" + s ;
} catch (Exception e) {
e.printStackTrace();
}
return"";
}
private String getMd5(Signature signature) {
return encryptionMD5(signature.toByteArray());
}
publicstatic String encryptionMD5(byte[] byteStr) {
MessageDigestmessageDigest=null;
StringBuffermd5StrBuff=newStringBuffer();
try {
messageDigest = MessageDigest.getInstance("MD5");
messageDigest.reset();
messageDigest.update(byteStr);
byte[] byteArray = messageDigest.digest();
for (inti=0; i < byteArray.length; i++) {
if (Integer.toHexString(0xFF & byteArray[i]).length() == 1) {
md5StrBuff.append("0").append(Integer.toHexString(0xFF & byteArray[i]));
} else {
md5StrBuff.append(Integer.toHexString(0xFF & byteArray[i]));
}
}
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return md5StrBuff.toString();
}
Solution 3:
- Find the path of your application's APK file by calling
Context.getPackageCodePath()
- Copy that APK to a writeable directory of your choice
- Use apk-parser to get the information you need from the APK (see example below)
That library is able to decompress the APK file and parse all of its content. An example extracted from the apk-parser's Github page, tailored to your needs:
try {
ApkParserapkParser=newApkParser(newFile(filePath));
ApkSignStatussignStatus= apkParser.verifyApk(); // not needed
List<CertificateMeta> certs = apkParser.getCertificateMetas();
for (CertificateMeta certificateMeta : certs) {
System.out.println(certificateMeta.getCertMd5());
}
} catch (Exception e) {
e.printStackTrace();
}
Solution 4:
Added below solution in-case if someone is looking for it for the first time, and don't know how to get it from studio as well. Many times we search and get suggestion links. Easiest Way
- Open Android Studio
- Open Your Project
- Click on Gradle (From Right Side Panel, you will see Gradle Bar)
- Click on Refresh (Click on Refresh from Gradle Bar, you will see List Gradle scripts of your Project)
- Click on Your Project (Your Project Name form List (root))
- Click on Tasks
- Click on android
- Double Click on signingReport (You will get SHA1 and MD5 in Run Bar)
Check Screenshot below:
Post a Comment for "How To Read Sha And Md5 Fingerprint Programmatically In Android"