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