Заголовок: pepk.jar завершается сбоем из-за исключения javax.crypto.BadPaddingException, препятствующего регистрации существующего приложения в системе подписи приложений Google Play.
Постановка проблемы:
Мы пытаемся зарегистрировать существующее приложение Android (com.clsreview.clsreview) в системе подписи приложений Google Play. У нас есть оригинальный действительный закрытый ключ и пароль к нему, и мы можем успешно подписывать пакеты приложений (.aab) с помощью Gradle. Однако официальный инструмент Google pepk.jar постоянно не может зашифровать наш закрытый ключ, возвращая исключение javax.crypto.BadPaddingException. Это полностью блокирует нашу возможность зарегистрироваться в программе подписи приложений и, следовательно, обновить наше приложение в Play Store.
Контекст:
Тип ключа: 2048-битный ключ RSA в хранилище ключей JKS/PKCS12.
Ключ Статус: не утерян, пароль известен и проверен при работе с keytool, openssl и плагином Android Gradle.
Подробные действия и устранение неполадок:
Попытка с оригинальным хранилищем ключей JKS:
Результат: pepk.jar v1.0 завершился с ошибкой «Не удалось проверить пароль». (вводит в заблуждение).
Создано чистое хранилище ключей PKCS12 через OpenSSL:
Мы успешно извлекли Private_key.pem и certificate.pem с помощью OpenSSL из нашего исходного хранилища ключей, подтвердив действительность ключа и пароля.
Затем мы создали чистый new_keystore.p12, используя OpenSSL, из этих PEM файлы.
Попытка использования чистого new_keystore.p12 и последней версии pepk.jar:
Мы загрузили последнюю версию pepk.jar со страницы подписи приложений консоли Google Play.
Error: Unable to export or encrypt the private key
java.io.IOException: keystore password was incorrect
at java.base/sun.security.pkcs12.PKCS12KeyStore.engineLoad(PKCS12KeyStore.java:2092)
at java.base/sun.security.util.KeyStoreDelegator.engineLoad(KeyStoreDelegator.java:243)
at java.base/java.security.KeyStore.load(KeyStore.java:1479)
at
com.google.wireless.android.vending.developer.signing.tools.extern.export.KeystoreHelper.loadKeystore(KeystoreHelper.j
ava:53)
at
com.google.wireless.android.vending.developer.signing.tools.extern.export.KeystoreHelper.getKeystore(KeystoreHelper.ja
va:39)
at
com.google.wireless.android.vending.developer.signing.tools.extern.export.ExportEncryptedPrivateKeyTool.run(ExportEncr
yptedPrivateKeyTool.java:207)
at
com.google.wireless.android.vending.developer.signing.tools.extern.export.ExportEncryptedPrivateKeyTool.main(ExportEnc
ryptedPrivateKeyTool.java:165)
Caused by: java.security.UnrecoverableKeyException: failed to decrypt safe contents entry:
javax.crypto.BadPaddingException: Given final block not properly padded. Such issues can arise if a bad key is used
during decryption.
... 7 more
Тестирование среды Java:
Мы протестировали команду, используя как OpenJDK 17 (наша основная среда), так и OpenJDK 11 (обычная версия LTS). Одно и то же исключение BadPaddingException сохраняется в обоих JDK.
Попытка ручной реализации Python:
Мы попытались написать сценарии Python для репликации функциональности pepk.jar, но это не удалось из-за криптографической сложности.
Вопросы для сообщества:
Кто-нибудь успешно преодолел это конкретное исключение javax.crypto.BadPaddingException при использовании pepk.jar с явно действительным ключом? Если да, то какое решение?
Известны ли конкретные несовместимости между файлами pepk.jar (даже последними версиями) и PKCS12, созданными определенными версиями OpenSSL или определенными форматами ключей (например, 2048-битными ключами RSA более старых версий)?
Учитывая, что у нас есть необработанные файлы Private_key.pem и Encryption_public_key.pem, существует ли надежный документированный метод или существующий инструмент (кроме pepk.jar), который может правильно сгенерировать зашифрованный файл .pepk, необходимый для регистрации приложения Play App Signing?
Существуют ли какие-либо альтернативные методы для регистрации существующего приложения в Play App Signing, когда официальный инструмент pepk.jar явно не работает из-за ошибки?
Мы полностью заблокированы от обновления нашего приложения и ищем любую информацию или обходные пути, которые может предложить сообщество.
Спасибо за ваше время и опыт.
Заголовок: pepk.jar завершается сбоем из-за исключения javax.crypto.BadPaddingException, препятствующего регистрации существующего приложения в системе подписи приложений Google Play. Постановка проблемы: Мы пытаемся зарегистрировать существующее приложение Android (com.clsreview.clsreview) в системе подписи приложений Google Play. У нас есть оригинальный действительный закрытый ключ и пароль к нему, и мы можем успешно подписывать пакеты приложений (.aab) с помощью Gradle. Однако официальный инструмент Google pepk.jar постоянно не может зашифровать наш закрытый ключ, возвращая исключение javax.crypto.BadPaddingException. Это полностью блокирует нашу возможность зарегистрироваться в программе подписи приложений и, следовательно, обновить наше приложение в Play Store. Контекст: [list] [*]Пакет приложения: com.clsreview.clsreview (существующее опубликованное приложение) [*]Тип ключа: 2048-битный ключ RSA в хранилище ключей JKS/PKCS12. [*]Ключ Статус: не утерян, пароль известен и проверен при работе с keytool, openssl и плагином Android Gradle. [/list] Подробные действия и устранение неполадок: [list] [*]Попытка с оригинальным хранилищем ключей JKS: [list] Результат: pepk.jar v1.0 завершился с ошибкой «Не удалось проверить пароль». (вводит в заблуждение). [/list]
[*]Создано чистое хранилище ключей PKCS12 через OpenSSL: [list] Мы успешно извлекли Private_key.pem и certificate.pem с помощью OpenSSL из нашего исходного хранилища ключей, подтвердив действительность ключа и пароля. [*]Затем мы создали чистый new_keystore.p12, используя OpenSSL, из этих PEM файлы. [/list]
[*]Попытка использования чистого new_keystore.p12 и последней версии pepk.jar: [list] Мы загрузили последнюю версию pepk.jar со страницы подписи приложений консоли Google Play. [*]Точная команда, которую мы выполнили, была: [/list]
[/list] [code] java -jar pepk.jar \ --keystore=new_keystore.p12 \ --alias=key0 \ --output=pepk-output.txt \ --include-cert \ --rsa-aes-encryption \ --encryption-key-path=encryption_public_key.pem \ --keystore-pass=pass:YOUR_PASSWORD \ --key-pass=pass:YOUR_PASSWORD [/code] [list] [*]Постоянный сбой: эта команда по-прежнему завершается с ошибкой BadPaddingException. [*]Это полная полученная трассировка ошибок: [/list] [code]Error: Unable to export or encrypt the private key java.io.IOException: keystore password was incorrect at java.base/sun.security.pkcs12.PKCS12KeyStore.engineLoad(PKCS12KeyStore.java:2092) at java.base/sun.security.util.KeyStoreDelegator.engineLoad(KeyStoreDelegator.java:243) at java.base/java.security.KeyStore.load(KeyStore.java:1479) at com.google.wireless.android.vending.developer.signing.tools.extern.export.KeystoreHelper.loadKeystore(KeystoreHelper.j ava:53) at com.google.wireless.android.vending.developer.signing.tools.extern.export.KeystoreHelper.getKeystore(KeystoreHelper.ja va:39) at com.google.wireless.android.vending.developer.signing.tools.extern.export.ExportEncryptedPrivateKeyTool.run(ExportEncr yptedPrivateKeyTool.java:207) at com.google.wireless.android.vending.developer.signing.tools.extern.export.ExportEncryptedPrivateKeyTool.main(ExportEnc ryptedPrivateKeyTool.java:165) Caused by: java.security.UnrecoverableKeyException: failed to decrypt safe contents entry: javax.crypto.BadPaddingException: Given final block not properly padded. Such issues can arise if a bad key is used during decryption. ... 7 more [/code] [list] [*]Тестирование среды Java: [list] Мы протестировали команду, используя как OpenJDK 17 (наша основная среда), так и OpenJDK 11 (обычная версия LTS). Одно и то же исключение BadPaddingException сохраняется в обоих JDK. [/list]
[*]Попытка ручной реализации Python: [list] Мы попытались написать сценарии Python для репликации функциональности pepk.jar, но это не удалось из-за криптографической сложности. [/list]
[/list] Вопросы для сообщества: [list] [*]Кто-нибудь успешно преодолел это конкретное исключение javax.crypto.BadPaddingException при использовании pepk.jar с явно действительным ключом? Если да, то какое решение? [*]Известны ли конкретные несовместимости между файлами pepk.jar (даже последними версиями) и PKCS12, созданными определенными версиями OpenSSL или определенными форматами ключей (например, 2048-битными ключами RSA более старых версий)? [*]Учитывая, что у нас есть необработанные файлы Private_key.pem и Encryption_public_key.pem, существует ли надежный документированный метод или существующий инструмент (кроме pepk.jar), который может правильно сгенерировать зашифрованный файл .pepk, необходимый для регистрации приложения Play App Signing? [*]Существуют ли какие-либо альтернативные методы для регистрации существующего приложения в Play App Signing, когда официальный инструмент pepk.jar явно не работает из-за ошибки? [/list] Мы полностью заблокированы от обновления нашего приложения и ищем любую информацию или обходные пути, которые может предложить сообщество. Спасибо за ваше время и опыт.