java 핸드폰에 설치된 APK의 서명 요약 가져오기

APK를 앱스토어에 게시하거나 제3자의 SDK에 접속할 때 APK의 서명 요약 정보를 제공해야 할 때가 있다. 요약 알고리즘인 MD5나 SHA-1을 통해 서명의 요약을 얻을 수 있다. 자신의 APK 서명을 얻는 것 외에 휴대전화에 설치된 다른 APK 서명도 얻을 수 있다. 다른 APK의 가방 이름만 불러오면 된다.

private static final char[] HEX_CHAR = {
 
  '0', '1', '2', '3', '4', '5', '6', '7',
 
  '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'
 
};
 
/**  MD5  */
 
public String[] signatureDigest() {
 
  pkgInfo = mContext.getPackageManager().getPackageInfo(
 
        mContext.getPackageName(), PackageManager.GET_SIGNATURES);
 
  int length = pkgInfo.signatures.length;
 
  String[] digests = new String[length];
 
  for (int i = 0; i < length; ++i) {
 
    Signature sign = mPkgInfo.signatures[i];
 
    try {
 
      MessageDigest md5 = MessageDigest.getInstance("MD5");
 
      byte[] digest = md5.digest(sign.toByteArray()); // get digest with md5 algorithm
 
      digests[i] = toHexString(digest);
 
    } catch (NoSuchAlgorithmException e) {
 
      e.printStackTrace();
 
      digests[i] = null;
 
    }
 
  }
 
  return digests;
 
}
 
/**   */
 
private String toHexString(byte[] rawByteArray) {
 
  char[] chars = new char[rawByteArray.length * 2];
 
  for (int i = 0; i < rawByteArray.length; ++i) {
 
    byte b = rawByteArray[i];
 
    chars[i*2] = HEX_CHAR[(b >>> 4 & 0x0F)];
 
    chars[i*2+1] = HEX_CHAR[(b & 0x0F)];
 
  }
 
  return new String(chars);
 
}
이상은 본문의 전체 내용입니다. 여러분의 학습에 도움이 되기를 바랍니다.

좋은 웹페이지 즐겨찾기