私钥算法与签名算法不兼容
jarsigner 错误: java.security.SignatureException: private key algorithm is not compatible with signature algorithm
问题场景:在Android Studio中签名是正确的,加固之后需要再次签名就报错了,用了腾讯的乐固加固后自动签名的,最后提示签名失败,360加固也是报错,用爱加密提示如下:
到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
完全看不懂在哪里设置,值得反思的就是其中的两点:
说可以设置加密方式,这条线索非常关键,于是乎上网搜了
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"
然后看到加密方式
把-sigalg SHA1withRSA换成-sigalg SHA1withDSA
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keypass XXX -storepass XXX -keystore AAA.keystore D:\A.apk 别名
马赛克如下:
记录到此 欢迎指正