我在以下线程中提出了我的担忧:
如何在 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如何做到这一点?
所以我试图找到解决方案,反过来,解决同样的问题。
-
在 v10 仍然安装的情况下,我仍然可以通过什么方式使用 JRE/JDK v7 的功能?以什么方式,我可以在窗口 7(即我的操作系统(的 java 控制面板中指定我想使用 Java 7。
-
我很难获得
"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
快乐的编码和探索:-(
此致敬意