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等信息方法