繁体   English   中英

MD5:Java 7及更高版本中keytool.exe输出的差异

[英]MD5: Difference in output of keytool.exe in Java 7 and above

我在以下主题中提出了我的担忧:

我如何在jdk.7.o中获取MD5哈希?

并看到如下线程:

如果安装了Java 8,则无法使用Java 7安装

而且我还研究了:

https://docs.oracle.com/cd/E74665_01/MOSHP/settings.htm#CIHEFHEF

但没有用。

由于我使用的JRE / JDK版本> 10,因此无法使用keytools从我选择的任何密钥库中获取MD5。 据说,如果我的JRE版本是7,则可以从密钥库中获取MD5。

另外,我已经尝试并知道,当在Android Studio或Eclipse中针对Android的默认密钥库(即开发人员密钥库)发出此命令时,它很容易在其中提供MD5。 因此,我还提出了一个问题,即当我的JRE版本大于10时,Android Studio或Eclipse如何做到这一点?

因此,我试图以其他方式找到解决同一问题的方法。

  1. 通过哪种方式,在仍然安装v10的同时,我仍然可以使用JRE / JDK v7的功能? 通过哪种方式,我可以在Window 7(即我的操作系统)的Java控制面板中指定要使用Java 7。

  2. 对于oracle支持,我很难获得"Support Identifier"信息,而无法获得该版本。 所以有人可以指导我如何获得它。

请在站点页面中搜索"Java SE 7, and Java SE 6 updates"

https://www.oracle.com/technetwork/java/javase/downloads/index-jsp-138363.html

请认准"Support Identifier" ,在打开,单击超链接后的页面: "My Oracle Support"这一段,后面。

[编辑(可能的答案)]:这是一些使用密钥库并从密钥库中找出SHA值的Base64的代码:

 try {
        PackageInfo info = getPackageManager().getPackageInfo(
                "com.sample.app", 
                PackageManager.GET_SIGNATURES);
        for (Signature signature : info.signatures) {
            MessageDigest md = MessageDigest.getInstance("SHA");
            md.update(signature.toByteArray());
            Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
    /*Note: may be instead of converting obtained bytes into Base64, 
I should convert it into hex string.*/
            }
    } catch (NameNotFoundException e) {

    } catch (NoSuchAlgorithmException e) {

    }

请告诉我是否有答案。 MD5的长度至少应为32个字节。

最好的祝福,

您的追随者。

肯定在线程中给出了答案:

如何在Android中以编程方式读取SHA和MD5指纹?

在此答案中,@ NateZh使用代码直接获取Digest的“ MD5”实例而不是“ SHA”,并将byteArray []转换为HEX String并提供了变体:

一种。 从签名获取MD5。

从byteArray []获得MD5

提示:

MessageDigest messageDigest = null;
StringBuffer md5StrBuff = new StringBuffer();
try {
messageDigest = MessageDigest.getInstance("MD5");
//... so on

快乐编码和探索:-)

最好的祝福

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM