導航:首頁 > 操作系統 > android簽名方式

android簽名方式

發布時間:2023-05-28 14:16:42

㈠ 如何對android的APP進行簽名

簽名方法:
1.使用Keytool 和jarsigner工具簽名(在jdk/bin目錄下)
1.生成簽名keystore:
確保電腦上安裝了JDK,因為我們將使用JDK自帶的創建和管理數字證書的工具Keytool。在命令行下輸入如下命令:
keytool -genkey -v -keystore app.keystore -alias alias_name -keyalg RSA -validity 20000
-alias 後面跟的是別名這里是alias_name
-keyalg 是加密方式這里是RSA
-validity 是有效期這里是20000
-keystore 就是要生成的keystore的名稱這里是app.keystore
然後按回車鍵
按回車後首先會提示你輸入的密碼:這個在簽腔譽名時要用的,要記住
然後會再確認你的密碼。
之後會依次叫你輸入姓名、組織單位、組織名稱、城市區域、省份名稱、國家代碼(CN)等。
Keytool的詳細參數請參考:
http://www.android123.com.cn/androidkaifa/173.html
2.簽名:
jarsigner -verbose -keystore app.keystore -signedjar app_signed.apk app.apk alias_name
-keystore: keystore的名稱
-signedjar app_signed.apk: 指定簽名後生成的APK名稱
app.apk: 目標APK
然後按回車:會要氏帆求輸入剛才設置的密碼,輸入後按回車就開始簽名了。

3.查看簽名:
jarsigner -verify app_signed.apk
查看是否簽名,如果已經簽名會列印 "jar verified".
jarsigner -verify -verbose -certs app_signed.apk
查看簽名詳細信息。

4.通過zipalign工具進行優化apk(android自帶的工具,./build/tools/zipalign)
zipalign -v 4 app_signed.apk androidres.apk 對apk優化
zipalign -c -v 4 androidres.apk 查看apk是否經過優化

2.使用eclipse ADT工具簽名
在Package Explorer 窗口,右鍵,選擇Android Tools--->Export Signed Application Package 然後按照提示一步一步,生成已簽名的apk。通過eclipse也可以導出未簽名的APK文件。
註:需要輸入兩次密碼,第一次是私鑰密碼,第二次時私鑰別名的伍核段密碼。

3.eclipse在debug模式下自動簽名(無須手動配置):
在debug模式下用eclipse 的ADT為android簽名,只要應用程序在eclipse下開發,系統就會自動給apk簽名和優化。
在Eclipse中Windows > Preferences > Android > Build可以看到你keysotre的位置

㈡ Android基礎『V1V2V3簽名』

基礎概念
簽名:在 APK 中寫入一個「指紋」。指紋寫入以後,APK 中有任何修改,都會導致這個指紋無效,Android 系統在安裝 APK 進行簽名校驗時就會不通過,從而保證了安全性。
摘要演算法: 使用一段簡單的看上去隨機的不可逆向的固定長度的字元串來表示一個文件的唯一性。 常見的摘要演算法如MD5(128個比特位)、SHA-1演算法(160/192/256個比特位)。
公鑰密碼體制:也稱非對稱演算法,特點是 公鑰是公開的 ,私鑰是保密的。常見的如:RSA。
展開討論一下RSA:

Android中的簽名方案
V1 :基於jarsigner(JDK自帶工具,使用keystore文件進行簽名) 或 apksigner(Android專門提供的,使用pk8、x509.pem進行簽名)。keystore和pk8/x509.pem可以相互轉換。
簽名原理:首先keystore文件包含一個MD5和一個SHA1摘要。 這也是很多開放平台需要我們上傳的摘要數據
簽名APK後會在META-INF文件夾下生產CERT.RSA、CERT.SF、MANIFEST.MF三個文件。

在apk中,/META-INF文件夾中保存著apk的簽名信息,一般至少包含三個文件,[CERT].RSA,[CERT].SF和MANIFEIST.MF文件。這三個文件就是對apk的簽名信息。
MANIFEST.MF中包含對apk中除了/META-INF文件夾外所有文件的簽名值,簽名方法是先SHA1()(或其他hash方法)在base64()。存儲形式是:Name加[SHA1]-Digest。
[CERT].SF是對MANIFEST.MF文件整體簽名以及其中各個條目的簽名。一般地,如果是使用工具簽名,還多包括一項。就是對MANIFEST.MF頭部信息的簽名,關於這一點前面源碼分析中已經提到。
[CERT].RSA包含用私鑰對[CERT].SF的簽名以及包含公鑰信息的數字證書。
  是否存在簽名偽造可能:
修改(含增刪改)了apk中的文件,則:校驗時計算出的文件的摘要值與MANIFEST.MF文件中的條目不匹配,失敗。
修改apk中的文件+MANIFEST.MF,則:MANIFEST.MF修改過的條目的摘要與[CERT].SF對應的條目不匹配,失敗。
修改apk中的文件+MANIFEST.MF+[CERT].SF,則:計算出的[CERT].SF簽名與[CERT].RSA中記錄的簽名值不匹配,失敗。
修改apk中的文件+MANIFEST.MF+[CERT].SF+[CERT].RSA,則:由於證書不可偽造,[CERT].RSA無法偽造。

V2 :7.0新增的
簽名後的包會被分為四部分
1. Contents of ZIP entries(from offset 0 until the start of APK Signing Block)
2. APK Signing Block
3. ZIP Central Directory
4. ZIP End of Central Directory
新應用簽名方案的簽名信息會被保存在區塊2(APK Signing Block) 中, 而區塊1( Contents of ZIP entries )、區塊3( ZIP Central Directory )、區塊4( ZIP End of Central Directory )是受保護的, 在簽名後任何對區塊1、3、4的修改都逃不過新的應用簽名方案的檢查

V3 :9.0新增的
格式大體和 v2 類似,在 v2 插入的簽名塊(Apk Signature Block v2)中,又添加了一個新快(Attr塊)
在這個新塊中,會記錄我們之前的簽名信息以及新的簽名信息,以 密鑰轉輪的方案,來做簽名的替換和升級。這意味著,只要舊簽名證書在手,我們就可以通過它在新的 APK 文件中,更改簽名 。
v3 簽名新增的新塊(attr)存儲了所有的簽名信息,由更小的 Level 塊,以 鏈表 的形式存儲。
其中每個節點都包含用於為之前版本的應用簽名的簽名證書,最舊的簽名證書對應根節點,系統會讓每個節點中的證書為列表中下一個證書簽名,從而為每個新密鑰提供證據來證明它應該像舊密鑰一樣可信。
這個過程有點類似 CA 證書的證明過程,已安裝的 App 的舊簽名,確保覆蓋安裝的 APK 的新簽名正確,將信任傳遞下去。
注意: 簽名方式只支持升級不支持降級,如安裝了V2的包,不能覆蓋替換為V1的包。

參考
Android App簽名(證書)校驗過程源碼分析
新一代開源Android渠道包生成工具Walle
Android 簽名機制 v1、v2、v3

㈢ Android系統簽名

有時候,我們開發的apk需要用到系統許可權,需要在AndroidManifest.xml中添加共享系統進程屬性:

這時候apk的簽名就需要是系統簽名(platform、shared或media)才能正常使用。
常用系統簽名方式

這種方式比較麻煩,你需要有編譯過的源碼環境,並按如下步驟:
1、拷貝App源碼到Android源碼的packages/apps/目錄下,且App源碼是普通(Eclipse)格式的
2、配置Android.mk,在其中添加

3、使用mm編譯App,生成的apk即系統簽名

這種方式比在源碼環境下簽名簡單,App可以在Eclipse或Android Studio下編譯,然後給apk重新簽名即可。
但這種方式在頻繁調試的時候比較痛苦,即使寫成腳本,也需要重復一樣的操作。
相關文件
platform.x509.pem、platform.pk8、signapk.jar

文件位置
platform.x509.pem、platform.pk8:

signapk.jar:

signapk源碼路徑:

簽名命令

步驟

1、將相關文件及源apk文件置於同一路徑下
2、檢查源apk包,去掉META-INF/CERT.SF 和 META-INF/CERT.RSA 文件
3、執行簽名命令即可

讓Android Studio集成系統簽名,需要用到一個工具 keytool-importkeypair ,詳見下文。

這個工具的作用是將系統簽名的相關信息導入到已有的簽名文件里。

工具的使用方法可以通過–help或README.textile來尋求幫助

platform.x509.pem、platform.pk8、keytool-importkeypair、demo.jks、signature.sh

我的做法是在App根目錄新建Signature文件夾專門存放簽名相關文件。
步驟

1、生成demo.jks簽名文件

2、編寫簽名腳本signature.sh,內容如下:

為腳本文件添加可執行許可權:

執行腳本:

3、配置builde.gradle

在android區域下(與defaultConfig同級)添加配置:

這樣debug或release apk就帶有系統簽名了。

如果想直接Run app就是release版且帶系統簽名的apk,還需修改:

這樣直接Run app就是帶系統簽名的release版apk了。

㈣ Android Studio 生成正式簽名apk(app-release.apk)的兩種方式

方式一:使用Android Studio生成

1.點擊Build->Generate,首次點擊可能會提示輸入操作系統密碼

2.彈出如下對話框,因為我們還沒有生成過keystore ,所以點擊Create new,新建keystore

3.填寫相關內容

Key store path 是 keystore的存放路徑
Alias 是別名,填寫APP名稱即可,別的名稱你記得住的也行

validity 是有效期限。
兩種密碼結合上一幅圖看

填寫完成後點擊ok
(記得備份,因為以後這個apk的新版本都是用這個keystore了)

4.彈出此窗口,自動填充好了這密碼和別名,Next

如果點擊了Remember passwords 可能需要輸入操作系統密碼。

5.填寫路徑,選擇簽名版本,點擊Finish

V2是Android 7.0出現的更安全更快速的簽名方式。

點擊ShowInExplore,或者自己打開路徑,就可以看到app-release.apk了
方式二:使用Gradle 生成

1.編輯 根目錄文件 gradle.properties

添加如下內容:

KEY_PATH=D:/Android/test1.jks
KEY_PASS=12345678
ALIAS_NAME=test
ALIAS_PASS=12345678
2.編輯 app/build.gradle 讀取指定的路徑密碼
在android 閉包中添加signingConfigs閉包:

android {
compileSdkVersion 25
buildToolsVersion "25.0.3"
defaultConfig {
applicationId "com.example.test"
minSdkVersion 16
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
signingConfigs {
config {
storeFile file(KEY_PATH)
storePassword KEY_PASS
keyAlias ALIAS_NAME
keyPassword ALIAS_PASS
}
}

在buildTypes release 閉包中添加 signingConfig signingConfigs.config 應用前面的簽名配置(ps:signingConfigs閉包必須在buildTypes閉包前)

buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.config
}
}

3.點擊右側工具欄的Gradle->項目名->:app->Tasks->build

assemble 用於生成測試版和正式版的apk

assembleDebug 用於生成測試版apk

㈤ Android開發之通過apksigner對apk進行v2簽名

在 Android 7.0 Nougat 中引入了全新的 APK Signature Scheme v2簽名方式,美團也推出相應的 Android渠道包生成工具Walle 。
360加固後需要重新簽名,藉助360官方提供的 簽名工具qihoo apk signer ,是採用的7.0以前的v1簽名,這時再通過walle打渠道包,是無法成功往apk寫入渠道號的。這時我們就必須藉助 Android SDK提供的apksigner 工具對已經打包好的apk進行v2簽名。

Android官方文檔已經對 apksigner的使用 有比較詳細的解釋。下面說說實際的操作步驟:

zip對齊,因為APK包的本質是一個zip壓縮文檔,經過邊界對齊方式優化能使包內未壓縮的數據有序的排列,從而減少應用程序運行時的內存消耗 ,通過空間換時間的方式提高執行效率(zipalign後的apk包體積增大了100KB左右)。
打開cmd,把目錄切換到SDK的build-tools目錄下念閉知(例如 E:SDKuild-tools25.0.2 ),執行:

zipalign命令選項不多:
-f : 輸出文件覆蓋源文件
-v : 詳細的輸出log
-p : outfile.zip should use the same page alignment for all shared object files within infile.zip
-c : 檢查當前APK是否已經執行過Align優化。
另外上面的數字4是代表按照4位元組(32位)邊界對齊。

這個工具位於SDK目錄的build-tools目錄下。必須說明的是,v2簽名方式時在Android7.0後才推出的,所以只有 版本>25 的SDKuild-tools中才能找到apksigner.jar。
打開cmd,把目錄切到SDKuild-tools版本號lib下(例如 E:SDKuild-tools25.0.2lib ),執行:

示例:

apksigner還支持另外的一些選項, 詳情點擊這里 。包括仔消指定min-sdk版本、max-sdk版本、輸出詳細信息、檢查apk是否已經簽名等等。
例如檢查apk是否已經簽名:

zipalign + apksigner,兩步走完成態首對apk包的v2簽名。且以上工具位於AndroidSDK目錄的build-tools中。

㈥ 如何對Android的APP進行簽名

方法/步驟

1
下載Java SE Development Kit (JDK)
在網路上搜索jdk即可搜索到,尺大然後下載安裝(安裝到c盤,製作簽名時好找到我們需要的文件),記住你電腦的系統,不要下載錯了,否則無法安裝。

2
安裝Java SE Development Kit (JDK)完成後點擊 開始 在搜索程序和文件中輸入cmd

3
點擊程序cmd.exe 打開cmd管理員窗口

4
電腦進入Android
【在打開的管理員窗口輸入cd+空格鍵+.android+回車鍵】

使用命令 keytool -list -v -keystore debug.keystore【將命令keytool -list -v -keystore debug.keystore復制到cmd管理員窗口中+回車鍵】

進入到目錄bin,並復制地址

將復制的地址粘貼到cmd管理員窗口中且在前面輸入cd+空格鍵

回車

再次將命令keytool -list -v -keystore debug.keystore粘貼到cmd管理員窗口中並回車

此時會出現上述錯誤,接下來執行命令keytool -genkey -v -keystore debug.keystore -alias androiddebugkey -keyalg RSA -validity 10000 並回車
輸入密匙庫口令【密匙口令 (自己設置) 即為密碼,最好設成數字,記住就行】+回車建
後面都是自己輸入後以回車鍵結束,最後 是絕談否輸入正確輸入 y。
一直回車。。。。就可以生成簽名證書

現在進入到目錄bin就可以找到debug.keystore這個文件了。
好了,這個文件就是用來對Android的APP進行簽名的簽名證書。
個人覺得應該把這個文件上傳到你自己的網盤中並困碰保存好,因為後面對APP進行簽名時要用到同一個簽名證書,簽名證書不同會導致簽名後的APP無法再手機上運行。

下載360簽名工具(支持Linux&MAC下批量簽名)。
360移動開發平台有,不過可能需要注冊才能下載(有點麻煩),可以找我要

下載解壓後進入→360簽名工具(支持Linux&MAC下批量簽名)→windows簽名工具→360Signer.exe(雙擊)

簽名成功!!
此時將生成一個【編繩_signed_Aligned.apk】後綴為_signed_Aligned的apk文件,沒有必要時盡量不要修改後綴

㈦ 獲取Android應用簽名的幾種方式

打開 Android Studio,然後選擇右邊的 Gradle 標簽,選擇一個項目,然後選擇 signingReport 這個 Task,雙凳鋒擊運行

然後選擇右下角的 Gradle Console,就可以看到簽名信息李彎了

使用解壓工具解壓 APK 文件,在 META-INF 文件夾拿到 CERT.RSA 文件。假設 CERT.RSA 文件的路徑是 C:\Users\Administrator\Desktop\CERT.RSA 。在 CMD 中輸入

就可以得到簽名信息了

jks 作為簽名文件,也可以通過命令行來查看的其中的簽名信哪粗悶息,假設簽名文件的名稱是 test_release.jks ,在終端中輸入

即可得到簽名信息

㈧ 談一談Android的簽名機制

首先,簽名是防止apk信息被修改的一個機制,打包時把apk的信息與證書做處理,生成加密信息,安裝時發現問題則拒絕安裝
v1簽名將apk的其他文件與證書做處理,信息保存到META-INF文件夾里,這么做的主要問題是直接修改apk包體是沒法檢測出來的,並由此導致了如Janus(CVE-2017-13156)這樣的極嚴重的漏洞(ART支持直接運行dex文件,通過dex頭部的魔數進行判斷,而應用安裝過程中是通過zip尾部的魔數判斷是否是有效的zip文件,所以只要構造出一個既是dex又是zip的文件就能繞過簽名驗證修改裡面的dex文件)
v2簽名則直接用apk文件,處理之後寫入進去,這樣修改包體也會被系統檢測出從而被拒絕安裝.

v1簽名:將apk中文件加密保存到META-INF目錄中,不包含META-INF目中的文件。生成MANIFEST.MF、CERT.SF、CERT.RSA文件
MANIFEST.MF :保存各文件的SHA-1通過BASE64加密後的值
CERT.SF:保存MANIFEST.MF文件的SHA-1通過Base64加密後的值 和MANIFEST.MF中各項的值再次SHA-1並Base64加密保存
CERT.RSA:保存公鑰和發布機構信息

v2簽名:對apk整個文件進行分塊摘要加密,並把加密信息存在zip中央目錄前 放在apk sign block區

Android 7.0中引入了APK Signature Scheme v2,v1是jar Signature來自JDK。
V1:應該是通過ZIP條目進行驗證,這樣APK 簽署後可進行許多修改 - 可以移動甚至重新壓縮文件。

V2:驗橡悉證壓縮文件的所有位元組,而橡者不是單個 ZIP 條目,因此,在簽名後無法再更改(包括 zipalign)。正因如此,現在在編譯過程中,我梁如薯們將壓縮、調整和簽署合並成一步完成。好處顯而易見,更安全而且新的簽名可縮短在設備上進行驗證的時間(不需要費時地解壓縮然後驗證),從而加快應用安裝速度。

v1和v2的簽名使用
1)只勾選v1簽名並不會影響什麼,但是在7.0上不會使用更安全的驗證方式
2)只勾選V2簽名7.0以下會直接安裝完顯示未安裝,7.0以上則使用了V2的方式驗證
3)同時勾選V1和V2則所有機型都沒問題

㈨ 怎麼給Android應用程序簽名

1、准備工作
apk的簽名工作可以通過兩種方式來完成:
1)通過ADT提供的圖形化界面完成apk簽名;
2)完全通過DOS命令來完成apk簽名
我比較喜歡第2)種方式,所以下面將講解如何通過命令的方式完成apk簽名。
給apk簽名一共要用到3個工具,或者說3個命令,分別是:keytool、jarsigner和zipalign,下面是對這3個工具的簡單介紹:
1)keytool:生成數字證書,即密鑰,也就是上面說到的擴展名為.keystore的那類文件;
2)jarsigner:使用數字證書給apk文件簽名;
3)zipalign:對簽名後的apk進行優化,提高與Android系統交互的效率(Android SDK1.6版本開始包含此工具)
從這3個工具的作用也可以看出,這3個工具的使用順序。通常我們自己所開發的所有應用程序,都是使櫻拆用同樣的簽名,即使用同一個數字證書,這就意味著:如果你是第一次做Android應用程序簽名,上面的3個工具都將用到;但如果你已經有數字證書了,以後再給其它apk簽名時,只需要用到jarsigner和zipalign就可以完成。
為了方便使用上面3個命令,首先需要將上面3個工具所在路徑添加到環境變數path中(我說的是為了方便使用,沒有說必須要這么做)。怎麼配置環境變數就不在此講解了,這里需要說一下這3個工具默認所在的路徑:
1)keytool:該工具位於jdk安裝路徑的bin目錄下;
2)jarsigner:該工具位於jdk安裝路徑的bin目錄下;
3)zipalign:該工具位於android-sdk-windows/tools/目錄下
不知道大家是否注意到keytool和jarsigner兩個工具是jdk自帶的,也就意味著生成數字證書和文件簽名不是Android的專利;另外從字面上理解jarsigner也能猜得出該工具主要是用來脊殲棗給jar文件簽名的。
2、生成未經簽名的apk文件
既然我們要自己對apk進行簽名,就不再需要ADT默認幫我們簽名了。如何得到一個未經簽名的apk文件呢?打開Eclipse,在Android工程名稱上點擊右鍵,依次選擇「Android Tools」 - 「Export Unsigned Application Package ...」,然後選擇一個存儲位置保存即可。這樣就得到了一個未經簽名的apk文件。
3、使用keytool工具生成數字證書
keytool -genkey -v -keystore liufeng.keystore -alias liufeng.keystore -keyalg RSA -validity 20000
說明:
1)keytool是工具名稱,-genkey意味著執行的是生成數字證書操作,-v表示將生成證書的詳細信息列印出來,顯示在dos窗口中;
2)-keystore liufeng.keystore 表示生成的數字證書的文件名為「改檔liufeng.keystore」;
3)-alias liufeng.keystore 表示證書的別名為「liufeng.keystore」,當然可以不和上面的文件名一樣;
4)-keyalg RSA 表示生成密鑰文件所採用的演算法為RSA;
5)-validity 20000 表示該數字證書的有效期為20000天,意味著20000天之後該證書將失效

㈩ 如何對Android的APP進行簽名

1.簽名的步驟

a.創建key

b.使用步驟a中產生的key對apk簽名


2.具體操作


方法一: 命令行下對apk簽名(原理)

創建key,需要用到keytool.exe (位於jdk1.6.0_24jrein目錄下),使用產生的key對apk簽名用到的是jarsigner.exe (位於jdk1.6.0_24in目錄下),把上兩個軟體所在的目錄添加到環境變數path後,打開cmd輸入

D:>keytool -genkey -alias demo.keystore -keyalg RSA -validity 40000 -keystore demo.keystore

/*說明:-genkey 產生密鑰

-alias demo.keystore 別名 demo.keystore

-keyalg RSA 使用RSA演算法對簽名加密

-validity 40000 有效期限4000天

-keystore demo.keystore */

D:>jarsigner -verbose -keystore demo.keystore -signedjar demo_signed.apk demo.apk demo.keystore

/*說明:-verbose 輸出簽名的詳細信息

-keystore demo.keystore 密鑰庫位置

-signedjar demor_signed.apk demo.apk demo.keystore 正式簽名,三個參數中依次為簽名後產生的文件demo_signed,要簽名的文件demo.apk和密鑰庫demo.keystore.*/

注意事項:android工程的bin目錄下的demo.apk默認是已經使用debug用戶簽名的,所以不能使用上述步驟對此文件再次簽名。正確步驟應該是:在工程點擊右鍵->Anroid Tools-Export Unsigned Application Package導出的apk採用上述步驟簽名。


方法二:使用Eclipse導出帶簽名的apk

Eclipse直接能導出帶簽名的最終apk,非常方便,推薦使用,步驟如下:

第一步:導出。

第二步:創建密鑰庫keystore,輸入密鑰庫導出位置和密碼,記住密碼,下次Use existing keystore會用到。

第三步:填寫密鑰庫信息,填寫一些apk文件的密碼,使用期限和組織單位的信息。

第四步:生成帶簽名的apk文件,到此就結束了。

第五步:如果下次發布版本的時候,使用前面生成的keystore再簽名。

第六步:Next,Next,結束!


方法三:使用IntelliJ IDEA導出帶簽名的apk

方法步驟基本和Eclipse相同,大概操作路徑是:菜單Tools->Andrdoid->Export signed apk。

閱讀全文

與android簽名方式相關的資料

熱點內容
邵氏武俠電影100部 瀏覽:132
男主是牛郎鴨子的小說 瀏覽:756
李時珍的電影全部 瀏覽:227
安卓10編譯伺服器硬體配置 瀏覽:957
什麼樣的主機適合當伺服器 瀏覽:856
衣服哪裡進貨app 瀏覽:516
解壓神器魔術 瀏覽:770
寬頻連接2如何連接伺服器地址 瀏覽:365
隨機信號估計演算法 瀏覽:860
安卓如何重壓開槍 瀏覽:377
航天時代飛鵬圖像處理演算法 瀏覽:521
php比較兩個文件 瀏覽:737
加密貨幣市場活躍 瀏覽:334
最便宜的雲盤伺服器架設傳奇 瀏覽:790
java反向工程 瀏覽:110
pdf文檔轉換excel 瀏覽:8
主角叫楚天的都市小說 瀏覽:754
程序員三重境界 瀏覽:871
菜雞方舟上怎麼開伺服器 瀏覽:727
馬林固件編譯錯誤 瀏覽:910