/* 
standard MessageDigest algorithms: 
MD5 
SHA-1 
SHA-256 
 */  
private String getCertificateFingerprint(Context mContext, String algorithm, String packageName) {  
    PackageManager pm = mContext.getPackageManager();  
    int flags = PackageManager.GET_SIGNATURES;  
    PackageInfo packageInfo = null;  
    try {  
        packageInfo = pm.getPackageInfo(packageName, flags);  
    } catch (PackageManager.NameNotFoundException e) {  
        e.printStackTrace();  
    }  
  
    if (packageInfo == null)  
        return null;  
  
    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();  
    }  
  
    if (cf == null)  
        return null;  
  
    X509Certificate c = null;  
    try {  
        c = (X509Certificate) cf.generateCertificate(input);  
    } catch (CertificateException e) {  
        e.printStackTrace();  
    }  
  
    if (c==null)  
        return null;  
  
    String hexString = null;  
    try {  
        MessageDigest md = MessageDigest.getInstance(algorithm);  
        byte[] publicKey = md.digest(c.getEncoded());  
        hexString = byte2HexFormatted(publicKey);  
    } catch (NoSuchAlgorithmException e1) {  
        e1.printStackTrace();  
    } catch (CertificateEncodingException e) {  
        e.printStackTrace();  
    }  
    return hexString;  
}  
  
public 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);  
        str.append(h.toUpperCase());  
        if (i < (arr.length - 1)) str.append(':');  
    }  
    return str.toString();  
}  

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 你是誰 的頭像
    你是誰

    你是誰的部落格

    你是誰 發表在 痞客邦 留言(0) 人氣()