MD5: разница в выводе keytool.exe в Java 7 и выше - PullRequest
0 голосов
/ 27 сентября 2018

Я выразил свои опасения в следующей теме:

как я могу получить хэш MD5 в jdk.7.o?

и видел такие темы, как:

Невозможно использовать установку Java 7, если установлена ​​Java 8

, и я также изучил:

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

, но нетuse.

Поскольку я использую версию JRE / JDK> 10, я не могу получить MD5 из любого хранилища ключей по своему выбору, используя keytools.Говорят, что MD5 можно получить из хранилища ключей, если моя версия JRE 7.

Кроме того, я пробовал и знал, что когда эта команда запускается внутри Android Studio или Eclipse для хранилища ключей по умолчанию Android, этоЭто хранилище ключей разработчиков, оно с готовностью дает MD5 там.Поэтому я также поднял вопрос о том, как Android Studio или Eclipse могут это сделать, когда моя версия JRE> 10?

Так что я пытаюсь найти решение, наоборот, для той же проблемы.

  1. Каким образом я все еще могу использовать функции JRE / JDK v7, пока v10 остается установленным?Каким образом я могу указать в панели управления Java в Windows 7 (то есть в моей ОС), что я хочу использовать Java 7.

  2. Мне труднополучить "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" в этом абзаце, который следует.

[EDIT (для возможного ответа)]: Вот некоторый код, который используетхранилище ключей и узнает значение Base64 SHA из хранилища ключей:

 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 байт.

С наилучшими пожеланиями,

Ваш подписчик.

1 Ответ

0 голосов
/ 03 октября 2018

Конечно ответ дается в теме:

Как программно читать отпечатки SHA и MD5 в Android?

Здесь в этом ответе @NateZh использовал кодчтобы получить экземпляр MD5 "Digest" прямо вместо "SHA", вместе с преобразованием byteArray [] в HEX String, а также предоставив варианты:

a.Получение MD5 из подписи.

b.Получение MD5 от byteArray []

Подсказки:

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

Счастливое кодирование и изучение: -)

С наилучшими пожеланиями

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...