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



我在以下线程中提出了我的担忧:

如何在 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 的功能?以什么方式,我可以在窗口 7(即我的操作系统(的 java 控制面板中指定我想使用 Java 7。

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

请在网站页面中搜索"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"

该段落中的后续链接。[编辑(可能的答案(]:下面是一些使用密钥存储的代码,并从keyStore中找出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 个字节。

此致敬意

您的追随者。

当然,答案是在线程中给出的:

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

在这个答案中,@NateZh使用代码直接获取摘要的"MD5"实例而不是"SHA",并将 byteArray[] 转换为十六进制字符串,并提供变体:

a. 从签名中获取 MD5。

b. 从 byteArray[] 获取 MD5

提示:

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

快乐的编码和探索:-(

此致敬意

最新更新