- 1、如何重簽名APK文件
- 2、創建app數字簽名證書
- 3、Android查看應用簽名方法
- 4、java數據證書管理工具keytool怎麼看生成成功了?
- 5、如何用Java讀取使用證書
方法一:需要刪除apk包中的簽名文件,META-INF(更改apk格式為壓縮包形式,刪除META-INF文件夾,改回.apk格式);
將證書(debug.keystore)複製到與需要重新簽名的apk文件相同的目錄下(如:複製到D:\Sign);
進入cmd模式,進入D:\Sign目錄;
運行下面的命令jarsigner -verbose -keystore debug.keystore -storepass android -signedjar PhoneBook_signed.apk -digestalg SHA1 -sigalg MD5withRSA PhoneBook.apk androiddebugkey/*解釋:-jarsigner是Java的簽名工具-verbose參數表示:顯示出簽名詳細信息-keystore表示使用當前目錄中的debug.keystore簽名證書文件-storepass android表示Keystore密碼:“android”-signedjar PhoneBook_signed.apk表示簽名後生成的APK名稱PhoneBook.apk表示未簽名的APK Android軟件-digestalg SHA1 -sigalg MD5withRSA:這就是必須加上的參數,如果你是jdk 1.6也不受影響-androiddebugkey表示Key別名
大功告成,看看文件夾吧;
方法二:使用工具re-sign.jar。打開re-sign.jar。刪除簽名文件,META-INF後,拖動apk到re-sign.jar處,並點擊保存;
App簽名的作用一方面保證安裝包內文件的完整性,以防文件被篡改導致不可預知的後果;另一方面在安裝包內附加應用的開發者信息。
總體來說,有如下三種app簽名方法:
1、開發環境自帶的app簽名
AS等開發環境一般都自帶app簽名的功能,只需要在開發環境中找到相應功能按照步驟逐步執行即可得到簽名後的apk文件。
2、cordova環境下編譯時自動簽名
Keytool是java自帶的簽名工具。
說明:
1)release-singing.properties是手工配置的文本文件:
2)build-extras.gradle是手工配置的文本文件:
3、手工簽名【我就是用的這種方法,挺好用的】
以上創建數字簽名證書和APP簽名的命令都是JAVA自帶的工具,親測沒有問題。在簽名時需要提供證書的密碼,該密碼就是創建數字簽名證書時設置的密碼。
查看應用簽名的MD5、SHA1、SHA256值及簽名算法。
查看keystore文件簽名信息,前提要有keystore文件和密鑰,才能夠獲取keystore文件的簽名信息。
方法一:(適用於 AS)
1)打開 AS工具窗口欄右邊的 Gradle – Project – app – Tasks – android – signingReport,雙擊運行 signingReport;
在沒有keystore文件和密鑰的情況下,要想查看我們所需應用的簽名信息,就需要藉助 keytool 工具來完成。
首先解壓要查看的apk包,通過數據證書管理工具 keytool 查看apk的簽名信息。具體步驟如下:
1)將apk修改後綴為 .rar 文件後進行解壓;
2)進入解壓後的 META-INF 目錄,找到該目錄下的 xxx.RSA 文件;
3)通過命令 cmd 打開DOS窗口,輸入命令 : keytool -printcert -file [RSA文件路徑]
在查看應用簽名信息過程中,可能會遇到以下幾個問題:
定位 keytool.exe 工具所在的目錄,使用相關操作命令查看簽名信息;
JKS(Java KeyStore) :是 Java 的 keytools 證書工具支持的證書私鑰格式。jks 包含了公鑰和私鑰,可以通過 keytool 工具來將公鑰和私鑰導出。因為包含了私鑰,所以 jks 文件通常通過一個密碼來加以保護。一般用於 Java 或者 Tomcat 服務器。
PKCS #12 :定義了一種存檔文件格式,用於實現存儲許多加密對象在一個單獨的文件中。通常用它來打包一個私鑰及有關的 X.509 證書,或者打包信任鏈的全部項目。
定位 keytool.exe 工具所在的目錄,使用操作命令轉換證書格式;
下面產生一個自簽證書。安裝完J2SDK(這裡用的是J2SDK1.4)後,在J2SDK安裝目錄的bin目錄下,有一個keytool的可執行程序。利用keytool產生自簽證書的步驟如下:
第一步,用-genkey命令選項,產生公私密鑰對。在控制台界面輸入:keytool -genkey -alias testkeypair -keyalg RSA -keysize 1024 -sigalg MD5withRSA。這裡的-alias表示使用這對公私密鑰產生新的keystore入口的別名(keystore是用來存放管理密鑰對和證書鏈的,缺省位置是在使用者主目錄下,以.keystore為名的隱藏文件,當然也可指定某個路徑存放.keystore文件);-keyalg是產生公私鑰對所用的算法,這裡是RSA;-keysize定義密鑰的長度;-sigalg是簽名算法,選擇MD5withRSA,即用RSA簽名,然後用MD5哈希算法摘要。接下來,系統會提示進行一些輸入:
輸入keystore密碼: abc123
您的名字與姓氏是什麼?
[Unknown]: Li
您的組織單位名稱是什麼?
nbs
證書(Certificate,也稱public-key certificate)是用某種簽名算法對某些內容(比如公鑰)進行數字簽名後得到的、可以用來當成信任關係中介的數字憑證。證書發行機構通過發行證書告知證書使用者或實體其公鑰(public-key)以及其它一些輔助信息。證書在電子商務安全交易中有着廣泛的應用,證書發行機構也稱CA(Certificate Authority)。
應用證書
證書在公鑰加密應用中的作用是保證公鑰在某些可信的機構發布,其在協議SSL、電子交易協議SET等方面有重要的應用。圖1顯示了一個最簡單的證書應用方法:
圖1 證書應用方法
證書的應用步驟是:
(1) A把自己的公鑰PKA送到CA(Certificate Authority);
(2) CA用自己的私鑰和A的公鑰生成A的證書,證書內包括CA的數字簽名。簽名對象包括需要在證書中說明的內容,比如A的公鑰、時間戳、序列號等,為了簡化這裡不妨假設證書中只有三項內容:A的公鑰PKA、時間戳TIME1、序列號IDA。那麼CA發送給A的簡單證書憑證可表達為:CertA=Eca[TIME1,IDA,PKA];
(3) B同樣把自己的公鑰PKB送到CA;
(4) B得到CA發布的證書CertB;
(5) A告知B證書CertA;
(6) B告知A證書CertB。
A、B各自得到對方證書後,利用從CA得到的公鑰(在CA的自簽證書中)驗證彼此對方的證書是否有效,如果有效,那麼就得到了彼此的公鑰。利用對方的公鑰,可以加密數據,也可以用來驗證對方的數字簽名。
本文為了方便說明,並沒有使用從CA獲得的證書,而是通信雙方各自產生自簽證書,也就是說圖1的A和B並沒有經過CA,不過前提是A和B之間是互相擁有對方的證書。
原創文章,作者:KVD2M,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/126365.html