jarsigner 错误: java.security.SignatureException: private key algorithm is not c ompatible with signat

私钥算法与签名算法不兼容

jarsigner 错误: java.security.SignatureException: private key algorithm is not compatible with signature algorithm 

问题场景:在Android Studio中签名是正确的,加固之后需要再次签名就报错了,用了腾讯的乐固加固后自动签名的,最后提示签名失败,360加固也是报错,用爱加密提示如下:

jarsigner 错误: java.security.SignatureException: private key algorithm is not c ompatible with signat_第1张图片

到java目录下用jarsigner命令:

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keypass XXX -storepass XXX -keystore AAA.keystore D:\A.apk 别名

显示如下:


第一次遇到这种问题,不知道上一任是怎么设置的??!!而且急着上线设置了新的签名,然后被拒了,叫客服修改了签名。下载量什么的清零,只改了应用宝的,应用宝只能修改两次签名。其他应用市场修改起了麻烦,需要软件著作权什么或者公司盖章的扫描件,签名问题最后别改,提交发布到应用市场了就算发布失败也会记录你的签名,除非改包名,这里小抱怨一下

然后搜索到github:

https://github.com/jvoegele/gradle-android-plugin/issues/84

完全看不懂在哪里设置,值得反思的就是其中的两点:

jarsigner 错误: java.security.SignatureException: private key algorithm is not c ompatible with signat_第2张图片

说可以设置加密方式,这条线索非常关键,于是乎上网搜了

http://www.aiuxian.com/so/p-27606.html,里面提到很多算法,这才想了解签名文件中用的是哪一种算法

最后查看了签名信息:

D:\Program Files\Java\jdk1.8XX\bin>keytool -list -v -keystore "D:\Program Files\Java\jdk1.8XX\bin\XXX.keystore"

然后看到加密方式

jarsigner 错误: java.security.SignatureException: private key algorithm is not c ompatible with signat_第3张图片

 把-sigalg SHA1withRSA换成-sigalg SHA1withDSA

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keypass XXX -storepass XXX -keystore AAA.keystore D:\A.apk 别名

马赛克如下:

jarsigner 错误: java.security.SignatureException: private key algorithm is not c ompatible with signat_第4张图片

记录到此 欢迎指正

你可能感兴趣的:(keystore签名算法)