Проверьте правильность пароля хранилища ключей Android
Я автоматизирую некоторые вещи, которые включают в себя Android Keytool и Jarsigner. Инструмент берет хранилище ключей, пароль для хранилища ключей, имя псевдонима и пароль для псевдонима / ключа, и я пытаюсь найти способ явно проверить, является ли предоставленный пароль для псевдонима / ключа правильным,
Есть идеи? Кроме того, мне нужно проверить его без JAR-файла, чтобы подписать - получение этого файла в моем контексте занимает много времени, поэтому я хочу прервать раньше, чем позже.
2 ответа
Вы также можете проверить правильность пароля, не пытаясь изменить пароль. Я сделал это, перечислив свойства хранилища ключей с помощью этой команды:
keytool -list -keystore <keystorefile> -storepass <passwordtocheck>
Вы можете сделать это несколькими способами:
А. с keytool
Если вы запустите команду keytool -keypasswd -keystore <keystore> -alias <alias> -storepass <storepass> -keypass <keypass> -new <keypass>
тогда вы получите ошибку Keystore was tampered with, or password was incorrect
если пароль хранилища ключей неправильный, или ошибка Cannot recover key
если пароль псевдонима неверен. К сожалению, код возврата равен 1 в обоих случаях, поэтому вам нужно будет выполнить анализ выходных данных программы, если вы хотите знать тип ошибки.
Б. С небольшой программой на Java
Что-то вроде этого:
KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());
try (FileInputStream fis = new FileInputStream(keystore)) {
ks.load(fis, ksPw.toCharArray());
}
ks.getEntry(alias, new KeyStore.PasswordProtection(aliasPw.toCharArray()));
потерпит неудачу в строке 4 с java.io.IOException
если пароль хранилища ключей неправильный, или с java.security.UnrecoverableKeyException
в строке 7, если пароль псевдонима является неправильным.