获取两个不同的哈希密钥,同时调试android程序



我正在使用此代码来获取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());才能获得相同的哈希。

最新更新