尝试注册“让 Google Play 管理您的应用签名密钥”时,“找不到任何支持 RSA/NONE/OAEPWithSHA1AndMGF1Padding 的提供商”

cbd*_*dev 24 android keystore google-play

您好,我正在尝试注册“让 Google Play 管理您的应用签名密钥”,但是当我按照步骤操作时,出现此错误:

输出

从我在其他答案中看到的情况来看,谷歌曾经提供了另一个名为的参数--encryptionkey,但不再给出,现在他们的教程如下所示:

在此输入图像描述

我怀疑错误来自--rsa-aes-encryption参数......但这只是一个猜测......

这是错误的文本版本,可以更轻松地复制:

MacBook-Pro Desktop % java -jar pepk.jar --keystore=cbk.keystore --alias=release --output=cbk1 --rsa-aes-encryption --encryption-key-path=encryption_public_key.pem
Enter password for store 'cbk.keystore':
Enter password for key 'release':
Error: Unable to export or encrypt the private key
java.security.NoSuchAlgorithmException: Cannot find any provider supporting RSA/NONE/OAEPWithSHA1AndMGF1Padding
    at java.base/javax.crypto.Cipher.getInstance(Cipher.java:574)
    at com.google.wireless.android.vending.developer.signing.tools.extern.export.ExportEncryptedPrivateKeyTool.encryptPrivateKeyWithCkmRsaAesKeyWrapEncryption(ExportEncryptedPrivateKeyTool.java:284)
    at com.google.wireless.android.vending.developer.signing.tools.extern.export.ExportEncryptedPrivateKeyTool.run(ExportEncryptedPrivateKeyTool.java:213)
    at com.google.wireless.android.vending.developer.signing.tools.extern.export.ExportEncryptedPrivateKeyTool.main(ExportEncryptedPrivateKeyTool.java:165)
Run Code Online (Sandbox Code Playgroud)

非常感谢你的帮助 !

小智 24

使用 OpenJDK ( https://jdk.java.net/ ) 而不是 Oracle JDK;它们与不同的工具打包在一起,显然 Google 期望 OpenJDK 集。


小智 12

只需从此处下载最新的“ready for use jdk” https://jdk.java.net ,然后:

使用下载的 java.exe 位置,例如 e:\download\jdk-20.0.2\bin\java.exe -jar pepk.jar --keystore=cbk.keystore --alias=release --output=cbk1 --rsa-aes -加密--加密密钥路径=加密_公共_密钥.pem


Nee*_*eel 12

你需要做两件事来解决这个问题:

1.使用Java JDK 21

2. 编辑私钥路径以包含文件名:private_key.pem

我使用的是 Mac,我按照以下步骤解决了这个问题:

  1. 从这里下载“ready for use jdk 21” https://jdk.java.net

  2. 将其移至/Library/Java/JavaVirtualMachines文件夹

  3. JAVA_HOME使用新路径更新了配置文件

nano ~/.zshenv

# ADD THIS AND SAVE
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-21.0.1.jdk/Contents/Home

source ~/.zshenv

Run Code Online (Sandbox Code Playgroud)
  1. 还在私钥路径中添加了私钥文件名。

  2. 我的最终命令如下所示:

java -jar /Users/me/keys/Google-Play-Signing/pepk.jar --keystore=/Users/me/keys/app-release-key.keystore --alias=app --output=/Users/me/keys/Google-Play-Signing/app-key/app_private_key.pem --rsa-aes-encryption --encryption-key-path=/Users/me/keys/Google-Play-Signing/encryption_public_key.pem
Run Code Online (Sandbox Code Playgroud)

就是这样。

  • 活命救星!在 M1 Max Pro 上为我工作。谢谢。 (2认同)

fai*_*ode 4

我也面临这个问题。

你需要做的是:

  1. 下载openjdk。就我而言,我使用jdk11版本:https://www.openlogic.com/openjdk-downloads? field_java_parent_version_target_id=406&field_operating_system_target_id=All&field_architecture_target_id=All&field_java_package_target_id=All
  2. 将您的环境设置为新下载的 openjdk 文件夹。
  3. set JAVA_HOME="d:\openjdk11"
  4. set PATH=%JAVA_HOME%\bin;%PATH%
  5. 将所有必需的文件(如密钥库、pepk.jar 和 crypto_public_key.pem)放在一个文件夹中。按照谷歌控制台的说明进行操作。根据您的参数更改它:java -jar pepk.jar --keystore=yourkeystore.keystore --alias=youralias --output=d:\newprivatekey --rsa-aes-encryption --encryption-key-path=encryption_public_key.pem

更改--output为绝对路径。就我而言,我会将输出密钥存储在我的 D: 存储中。