使用PEPK.jar导出Google Play私钥报错,应选用哪个JDK版本?
PEPK工具加密私钥报错:无法找到RSA/NONE/OAEPWithSHA1AndMGF1Padding算法支持的解决方案
问题详情
PEPK(Play Encrypt Private Key)用于从Java Keystore导出私钥并加密,以提交至Google Play完成应用签名注册。执行以下命令:
java -jar pepk.jar --keystore=huoshanbox.jks --alias=huoshanbox --output=output.zip --include-cert --rsa-aes-encryption --encryption-key-path=encryption_public_key.pem
输入密钥库及密钥密码后,触发如下错误:
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:563) 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)
已尝试JDK 11、17、20的通用OpenJDK版本,均出现相同报错,需确定合适的JDK版本。
可行的JDK版本选择
- Oracle JDK 11:官方发行版默认包含完整的加密算法套件,
RSA/NONE/OAEPWithSHA1AndMGF1Padding算法直接受支持,可直接解决该问题。 - Eclipse Temurin 11:原AdoptOpenJDK的开源延续版本,默认集成必要的加密扩展,完全支持目标算法,且免费可用。
- Azul Zulu 11:合规的OpenJDK发行版,完整保留加密算法实现,能满足PEPK工具的需求。
原因解析
报错根源是当前JDK的加密提供者未包含目标算法实现。部分OpenJDK发行版因许可限制或裁剪优化,默认移除了该算法;而上述推荐的JDK版本,均完整保留了加密算法套件,适配PEPK的加密需求。
若不愿更换JDK版本,也可通过添加BouncyCastle加密提供者弥补算法缺失,但切换至合规JDK版本是更简便直接的解决方案。
内容的提问来源于stack exchange,提问作者ikool
相关产品推荐
相关产品推荐

