1.通过签名文件获取SHA1和SHA256
直接通过cmd执行命令
keytool -list -v -keystore xxxxx/xxx/xx/xxx.keystore
输入后回车会提示输入密码库口令,直接输入Keystore密码(输入过程中终端上不会显示,输完回车就行)
2.获取md5
由于上述以前这种方式是可以打印出MD5,现在这种方式却没把MD5值打印出来,处理办法如下
直接在as中的Terminal工具在命令行中输入gradle命令:
./gradlew signingReport
3.从Keystore获取公钥信息
1.导出公钥文件
输入指令,包的别名可以从上面获取MD5那里可以找到别名。
keytool -export -alias 包的别名 -file 路径/文件名.cer -keystore 路径/文件名.keystore
输入完成后回车,会提示输入一次密码,输入密码后回车,就能生成cer文件了。
2.转换成pem证书
openssl x509 -inform der -in 路径/名称.cer -out 路径/名称.pem
输入指令,回车即可转换成pem证书
3.查看公钥
keytool -list -rfc --keystore 路径/名称.keystore | openssl x509 -inform pem -pubkey
输入指令,回车后输入密码,再回车,即可看到公钥信息。
-----BEGIN PUBLIC KEY-----
这里就是公钥了!!
-----END PUBLIC KEY-----
4.如何生成私钥
1. 从JKS转换到PKCS12
keytool -importkeystore -srckeystore 路径/名称.jks -destkeystore 路径/名称.p12 -srcstoretype JKS -deststoretype PKCS12 -srcstorepass 源密钥库密码 -deststorepass 目标密钥库密码 -srcalias 源密钥库别名 -destalias 目标密钥库别名 -srckeypass 源密钥库中私钥密码 -destkeypass 目标密钥库中私钥密码 -noprompt
具体来说:
- srcstorepass:这是源密钥库的密码,即您要从中获取数据的密钥库的密码。
- deststorepass:这是目标密钥库的密码,即您要将数据存储到的密钥库的密码。
- srcalias:这是源密钥库中的别名的标识符,用于指定要导入的条目。
- destalias:这是目标密钥库中的别名的标识符,用于指定要将条目导入到的位置。
- srckeypass:这是源密钥库中私钥的密码短语,用于在访问源密钥库时验证身份并获取私钥。
- destkeypass:这是目标密钥库中私钥的密码短语,用于在访问目标密钥库时验证身份并获取私钥。
- -noprompt:这是一个选项,表示在执行过程中不提示输入密码或进行任何交互。
生成.p12文件
2. 从PKCS12转换成PEM格式
openssl pkcs12 -in 路径/名称.p12 -out 路径/名称.pem -passin pass:密码-passout pass:密码
- pkcs12 是OpenSSL的一个命令,用于处理PKCS#12格式的文件。
- -in 参数后面的是输入文件的路径和名称,即你要处理的PKCS#12文件。
- -out参数后面的是输出文件的路径和名称,即你希望输出的PEM格式的文件。
- -passin和**-passout**参数后面的是输入和输出文件的密码。在-passin中,你输入你的PKCS#12文件的密码;在-passout中,你设置PEM文件的输出密码。
3.生成私钥companyname_private_key.pem文件
openssl pkcs12 -in 路径/名称.p12 -nodes -nocerts -out 路径/名称_private_key.pem
打开文件就有私钥信息了
最后然后随便找一个网站测试一下
参考文章生成keystore以及导出keystore公钥,私钥信息
参考文章【Android】从Keystore中查看公钥和MD5
参考文章APP备案,最新获取安卓签名文件中MD5等信息方法