我有一个android库。我需要添加功能来检查是否只有有效的用户才能使用此库。为此,我需要从android keystore中读取值。如何从android keystore读取值?
最佳答案
您可以使用“ PacakgeInfo.signatures”获取应用程序的签名证书。通常,只有一个签名,因此应该为您提供证书(即使证书被称为“签名”,它也会保留证书)。您可以采用Blob的SHA1等哈希值进行指纹比较。
PackageInfo pi = packageManager.getPackageInfo(getPackageName());
byte[] certificate = pi.signatures[0].toByteArray();
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] fingerprint = md.digest(certificate);
String hexFingerprint = toHexString(fingerprint);
当然,为了使此检查有效,您需要将指纹嵌入到库中。请记住,将其反编译并更换指纹非常容易。