我正在使用此代码来获取keyhash。
PackageInfo info = getPackageManager().getPackageInfo(getPackageName(), PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures)
{
MessageDigest md = MessageDigest.getInstance("SHA1");
md.update(signature.toByteArray());
Log.d("KeyHash", Base64.encodeToString(md.digest(), Base64.DEFAULT));
}
当我调试这段代码时,选择"Base64.encodeToString(md.dedigest(),Base64.DEFAULT)",然后按Shift+ctrl+I,它返回keyhash。再次按Shift+ctrl+I,返回不同的keyhash。
Log.d("KeyHash", Base64.encodeToString(md.digest(), Base64.DEFAULT));
请告诉我,有什么问题?
您必须更改方法替换行-
MessageDigest md = MessageDigest.getInstance("SHA1");
在的位置
MessageDigest md = MessageDigest.getInstance("SHA");
它会帮助你的。
来自MessageDigest的文档。digest():
计算并返回此MessageDigest的最终哈希值计算摘要后,接收器被重置。
这意味着在调用digest()
之后,MessageDigest
对象将被重置,因此在调用digest()
之前必须再次调用md.update(signature.toByteArray());
才能获得相同的哈希。