You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Play应用签名报错:NoSuchAlgorithmException问题求助

解决JDK 17下PEPK工具的RSA加密算法缺失问题

问题原因

JDK 17默认移除了RSA/NONE/OAEPWithSHA1AndMGF1Padding算法的支持,而PEPK工具依赖该算法加密私钥,因此抛出NoSuchAlgorithmException异常。BouncyCastle安全提供者可补充支持这类算法,解决此问题。

Mac上安装并配置BouncyCastle到JDK 17的步骤

方法一:全局配置(对所有Java应用生效)

  1. 获取BouncyCastle JAR包
    下载兼容JDK 17的bcprov-jdk15on.jar,保存到本地路径(比如~/Downloads/bcprov-jdk15on.jar)。

  2. 放置JAR到JDK安全扩展目录
    找到你的JDK 17安装路径,例如Oracle JDK默认路径为/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home,OpenJDK(如Adoptium)路径类似。
    执行以下命令将JAR复制到扩展目录(需管理员权限):

    sudo cp ~/Downloads/bcprov-jdk15on.jar /Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home/lib/ext/
    
  3. 修改JDK安全配置
    打开${JAVA_HOME}/conf/security/java.security文件,找到以security.provider.开头的配置行,在最后一行后添加:

    security.provider.11=org.bouncycastle.jce.provider.BouncyCastleProvider
    

    注意:将11替换为当前最后一个提供者序号+1,比如原最后一行是security.provider.10=...,就用11。

  4. 重新运行PEPK命令
    直接执行原命令即可:

    java -jar pepk.jar --keystore=foo.keystore --alias=foo --output=encrypted_private_key_path --rsa-aes-encryption --encryption-key-path=/path/to/encryption_public_key.pem
    

方法二:临时配置(仅对当前PEPK命令生效,不修改全局JDK)

若不想改动全局JDK配置,可在运行PEPK时直接指定类路径和安全提供者,命令如下:

java -cp "pepk.jar:/path/to/bcprov-jdk15on.jar" -Djava.security.providers=org.bouncycastle.jce.provider.BouncyCastleProvider com.google.wireless.android.vending.licensing.Pepk --keystore=foo.keystore --alias=foo --output=encrypted_private_key_path --rsa-aes-encryption --encryption-key-path=/path/to/encryption_public_key.pem

将/path/to/bcprov-jdk15on.jar替换为你实际的JAR文件路径。

内容的提问来源于stack exchange,提问作者sandeep

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 07:05:10