简体   繁体   English

生成签名的 apk - 获取密钥失败:给定最终块未正确填充

[英]Generate a signed apk - Get Key failed: Given final block not properly padded

I'm trying to publish my first app on Google Play and I encounter difficulties.我正在尝试在 Google Play 上发布我的第一个应用程序,但遇到了困难。 Let me explain my problem to you: My app compiles and I want to generate a signed apk... That doesn't work with android studio (Build--> generate signed budle/apk) and I had the next error message:让我向您解释我的问题:我的应用程序编译,我想生成一个签名的 apk ......这不适用于 android studio (Build--> generate signed budle/apk) ,我收到了下一条错误消息:

erreur keytool : java.io.FileNotFoundException: C:\Users\sebla\Desktop\AndroidApp\jdk-11.0.1\bin\mykeystore.jks (Accès refusé)

Then, I succeeded in creating the keystore (via cmd):然后,我成功创建了密钥库(通过 cmd):
C:\\Users\\sebla\\Desktop\\AndroidApp\\jdk-11.0.1\\bin>keytool -genkey -v -keystore appkeystore.keystore -alias permisKey -keyalg RSA -keysize 2048 -validity 10000

but now I got the following error message when generating the signed apk:但是现在我在生成签名的 apk 时收到以下错误消息:

Something went wrong with the encryption tool: Get Key failed: Given final block not properly padded
java.security.UnrecoverableKeyException: Get Key failed: Given final block not properly padded
    at sun.security.pkcs12.PKCS12KeyStore.engineGetKey(PKCS12KeyStore.java:410)
    at sun.security.provider.KeyStoreDelegator.engineGetKey(KeyStoreDelegator.java:96)
    at sun.security.provider.JavaKeyStore$DualFormatJKS.engineGetKey(JavaKeyStore.java:70)
    at java.security.KeyStore.getKey(KeyStore.java:1023)
    at com.google.wireless.android.vending.developer.signing.tools.extern.export.KeystoreHelper.extractPrivateKey(KeystoreHelper.java:56)
    at com.google.wireless.android.vending.developer.signing.tools.extern.export.KeystoreHelper.getPrivateKey(KeystoreHelper.java:35)
    at com.google.wireless.android.vending.developer.signing.tools.extern.export.ExportEncryptedPrivateKeyTool.run(ExportEncryptedPrivateKeyTool.java:98)
    at org.jetbrains.android.exportSignedPackage.ExportSignedPackageWizard$2.run(ExportSignedPackageWizard.java:241)
    at com.intellij.openapi.progress.impl.CoreProgressManager$TaskRunnable.run(CoreProgressManager.java:750)
    at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$1(CoreProgressManager.java:157)
    at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:580)
    at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:525)
    at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:85)
    at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:144)
    at com.intellij.openapi.progress.impl.CoreProgressManager$4.run(CoreProgressManager.java:395)
    at com.intellij.openapi.application.impl.ApplicationImpl$1.run(ApplicationImpl.java:305)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
Caused by: javax.crypto.BadPaddingException: Given final block not properly padded
    at com.sun.crypto.provider.CipherCore.doFinal(CipherCore.java:989)
    at com.sun.crypto.provider.CipherCore.doFinal(CipherCore.java:845)
    at com.sun.crypto.provider.PKCS12PBECipherCore.implDoFinal(PKCS12PBECipherCore.java:399)
    at com.sun.crypto.provider.PKCS12PBECipherCore$PBEWithSHA1AndDESede.engineDoFinal(PKCS12PBECipherCore.java:431)
    at javax.crypto.Cipher.doFinal(Cipher.java:2165)
    at sun.security.pkcs12.PKCS12KeyStore.engineGetKey(PKCS12KeyStore.java:348)
    ... 20 more
------------------------------------

Some help would be much appreciated as I'm completely lost and frustrated not being able to publish my app.一些帮助将不胜感激,因为我完全迷失和沮丧无法发布我的应用程序。 Do I have any code to implement in manifest or gradle to remove that error?我是否有任何代码要在清单或 gradle 中实现以消除该错误?

I got the same error message after generating a keystore and signing and publishing the APK with Codemagic . 生成密钥库并使用Codemagic签署和发布 APK 后,我收到了相同的错误消息。

My issue is that the command to generate the keystore only asked for the password of the keystore, which was then applied to the key.我的问题是生成密钥库的命令只要求提供密钥库的密码,然后将其应用于密钥。 I found this out explicitly opening the keystore and unlocking the key using Keystore explorer .我发现这一点明确打开密钥库并使用Keystore explorer解锁密钥

Double check that (1) your key password is correct (not just keystore password) and (2) your key password is being used by gradle in codesinging correctly.仔细检查(1)您的密钥密码是否正确(不仅仅是密钥库密码)和(2)您的密钥密码是否被 gradle 在正确编码中使用。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM