日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

【字节码插桩】Android 签名机制 ( 生成 Android 签名文件 | 分析签名文件 | 签名文件两个密码的作用 | 三种签名方式 )

發(fā)布時間:2024/8/1 Android 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【字节码插桩】Android 签名机制 ( 生成 Android 签名文件 | 分析签名文件 | 签名文件两个密码的作用 | 三种签名方式 ) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄

  • 一、Android 簽名機制
  • 二、生成 Android 簽名文件
  • 三、分析簽名文件
  • 四、簽名文件兩個密碼的作用
  • 五、三種簽名方式





一、Android 簽名機制



APK 文件簽名 是為了保證 APK 來源真實性 , 以及 APK 文件沒有被修改過 ;


APK 簽名基于 Hash 散列算法進行 ;

Hash 散列算法特性 :

  • 唯一性
  • 長度固定
  • 不可逆

常用的 Hash 三列算法 :

  • SHA-1 算法 : 安全散列算法 111 , 長度 160160160 位 ;
  • MD5 算法 : 128128128 位 ;

簽名過程 :

  • ① 計算數(shù)據(jù)摘要 : 通過 Hash 算法 , 計算出原始數(shù)據(jù) ;
  • ② 私鑰加密 : 使用私鑰對原始數(shù)據(jù)再次進行加密 ; 校驗時 , 使用公鑰對原始數(shù)據(jù)進行解密 ;
  • ③ 寫入簽名 : 將簽名寫入簽名區(qū)塊 ;

簽名時 , 輸入簽名文件 keystore 的密碼后 , 還要輸入的別名 和 別名密碼 ; 一個 keystore 可以存放多個密鑰 ;


簽名相當于一個指紋 , 對 APK 的任何修改 , 哪怕在任意資源文件上加上一個空格 , 都會導致簽名被破壞 , 無法通過校驗 ;

簽名時 , 使用私鑰對 APK 加密 ; 安裝 APK 包時 , 系統(tǒng)會使用公鑰解密 ;





二、生成 Android 簽名文件



生成簽名密鑰 :

在 Android Studio 中 , 選擇 " 菜單欄 / Build / Generate Signed Bundle/APK… " 選項 ,

選擇 APK 選項 ,

選擇創(chuàng)建新的簽名文件 ,

在 " Key store path " 中 , 選擇簽名文件的生成路徑 ,

在彈出的對話框中 , 點擊綠色的安卓圖標 , 生成在工程根目錄 ,

輸入密碼和別名密碼 , 都設置為 123456 , 點擊 " OK " 即可生成該簽名文件 ;

簽名文件生成在工程根目錄中 ;





三、分析簽名文件



使用

keytool -list -v -keystore keystore.jks

命令 , 可以查看該簽名密鑰的詳細信息 ;

下方的擴展中 , 有 111 個密鑰 #1: ObjectId: 2.5.29.14 Criticality=false ;

111 個 jks 文件中 , 可以有多個密鑰的 , 在該擴展中 , 可以有多個密鑰 ;

上述簽名 , 有負責 Java 程序簽名的 , 有負責 Android APK 簽名的 ;

Y:\002_WorkSpace\001_AS\AppStart>keytool -list -v -keystore keystore.jks 輸入密鑰庫口令: 密鑰庫類型: PKCS12 密鑰庫提供方: SUN您的密鑰庫包含 1 個條目別名: key0 創(chuàng)建日期: 2021-9-14 條目類型: PrivateKeyEntry 證書鏈長度: 1 證書[1]: 所有者: CN=Han Shuliang 發(fā)布者: CN=Han Shuliang 序列號: 3f8f6290 有效期為 Tue Sep 14 22:31:41 GMT+08:00 2021Sat Sep 08 22:31:41 GMT+08:00 2046 證書指紋:MD5: C1:02:69:22:1F:DB:62:A2:75:B4:C3:B8:6A:55:0C:23SHA1: 52:00:F8:BB:3B:3E:5B:DC:CF:BD:94:5A:30:A4:DF:C4:9D:33:54:EESHA256: 02:42:F3:F2:5B:9A:04:9A:28:FD:16:06:25:66:BF:28:F0:DE:14:42:69:04:60:DF:2C:AD:42:C0:51:6D:9B:57 簽名算法名稱: SHA256withRSA 主體公共密鑰算法: 2048 位 RSA 密鑰 版本: 3擴展:#1: ObjectId: 2.5.29.14 Criticality=false SubjectKeyIdentifier [ KeyIdentifier [ 0000: 26 9F 73 C0 B7 BC 03 F2 6A 15 0A E1 B7 8C 0B 78 &.s.....j......x 0010: 1A 92 C4 8E .... ] ]******************************************* *******************************************





四、簽名文件兩個密碼的作用



紅色矩形框內的密碼是簽名文件的密碼 ;

藍色矩形框內的別名和密碼 , 是給 APK 簽名的密碼 ;





五、三種簽名方式



Android 有 333 套簽名方式 ,

V1 簽名是 Jar 文件簽名 ; 該簽名有一定的不安全性 ;

V2 簽名是 整個 APK 文件簽名 ; 這是在 Android 7.07.07.0 之后出現(xiàn)的 ;

V3 簽名需要升級簽名密鑰 ; 在 Android 9.09.09.0 之后出現(xiàn)的 ;

總結

以上是生活随笔為你收集整理的【字节码插桩】Android 签名机制 ( 生成 Android 签名文件 | 分析签名文件 | 签名文件两个密码的作用 | 三种签名方式 )的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。