我在以下主题中提出了自己的担忧:
how i can get MD5 hash in jdk.7.o?
和类似的线程:
Cannot use Java 7 installation if Java 8 is installed
我还研究了:
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的功能?通过哪种方式,我可以在Window 7(即我的操作系统)的Java控制面板中指定要使用Java 7。
对于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"
。
[编辑(可能的答案)]:这是一些使用密钥存储并从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个字节。
最好的问候,
您的关注者。
答案 0 :(得分:0)
肯定在线程中给出了答案:
How to read SHA and MD5 fingerprint programmatically in Android ?
在此答案中,@ NateZh使用代码直接获取Digest的“ MD5”实例而不是“ SHA”,并将byteArray []转换为十六进制字符串,并提供了变体:
a。从签名中获取MD5。
b。从byteArray []
获取MD5提示:
MessageDigest messageDigest = null;
StringBuffer md5StrBuff = new StringBuffer();
try {
messageDigest = MessageDigest.getInstance("MD5");
//... so on
快乐的编码和探索:-)
最好的问候