當前位置:首頁 » 安卓系統 » androidapk簽名獲取

androidapk簽名獲取

發布時間: 2024-05-10 21:53:09

A. 如何提取apk簽名key

如果不知道密碼就很難提取,如果有密碼 用JDK裡面的key tools工具可以提取

B. 如何獲取android 簽名信息

android中有時候需要獲取應用的簽名信息,簽名信息一般有:公鑰,演算法名,MD5值,序列號。要想獲取這些信息首先該APK應用要有系統許可權。

1. 在配置文件里添加系統許可權:android:sharedUserId="android.uid.system"

2. 獲取簽名信息的字元信息:

String signature_key = "";

try{

PackageInfo packageInfo = context.getPackageManager().getPackageInfo(pkgName,
PackageManager.GET_SIGNATURES);

Signature[] signatures =
packageInfo.signatures;

SignatureKey.parseSignature(signatures[0].toByteArray());

} catch (NameNotFoundException e) {

e.printStackTrace();

} catch (NullPointerException e) {

e.printStackTrace();

}

(1).其中packageInfo 得到的是指定包名的簽名信息的字元串。另提及多說一句:在程序中我們一般使用

List list =
mPackageManager.getInstalledPackages(0);來得到所有的安裝包的信息,這其中包括應用名,包名,大小....

(2).
其中[]signatures里是存放的簽名的字元串數組。我們一般取用第一個signatures[0]來做為該應用的簽名信息。這里有一個疑惑就是為什麼得到的是一個字元串的數組列表,而不是一個字元串,也有的開發者採用:

StringBuilder builder = new StringBuilder();

for(Signature sign: signatures
){
builder.append(sign.toCharsString());
builder.append("/n");
}來得到所有的簽名信息。在這里我驗證過,signatures
的長度為1,所以指定apk的簽名信息就為signatures[0]。

至於第二種方法有待發現。

3 .獲取簽名的MD5值

public static final String getMD5String(byte[] paramArrayOfByte)
{
char[] asciiTable = { 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
97, 98, 99, 100, 101, 102 }; // ascii表對應的數字和字元的編碼
try
{
MessageDigest md5MessageDigest =
MessageDigest.getInstance("MD5");
md5MessageDigest.update(paramArrayOfByte);//
byte[]
tempByte = md5MessageDigest.digest();
int i =
tempByte.length;
char[] tempChar = new char[i *
2];
int j = 0;
int k =
0;
while (true) { //
將二進制數組轉換成字元串
if (j >= i)
{
return new
String(tempChar);
}
int m
= tempByte[j];
int n = k +
1;
tempChar[k] = asciiTable[(0xF & m >>>
4)];
k = n +
1;
tempChar[n] = asciiTable[(m &
0xF)];
j++;
}
}
catch (Exception e)
{
e.printStackTrace();
}
return
null;
}

(1). 其中參數就是上一步得到的簽名的byte數組。

4. 獲取公鑰,簽名演算法,簽名序列號

public static void parseSignature(byte[] signature)
{
try
{
CertificateFactory
certFactory =
CertificateFactory.getInstance("X.509");

X509Certificate cert = (X509Certificate) certFactory.generateCertificate(new
ByteArrayInputStream(signature));

String pubKey =
cert.getPublicKey().toString(); //公鑰

String signNumber =
cert.getSerialNumber().toString();

System.out.println("signName:" +
cert.getSigAlgName());//演算法名

System.out.println("pubKey:" +
pubKey);

System.out.println("signNumber:" +
signNumber);//證書序列編號

System.out.println("subjectDN:"+cert.getSubjectDN().toString());

} catch (CertificateException e)
{

e.printStackTrace();
}
}

5. 電腦查看APK簽名信息

查看三方應用或是系統應用簽名
用winrar打開待查看的apk,將其中META-INF文件夾解壓出來,得到其中的CERT.RSA文件
1.keytool
-printcert -file META-INF/CERT.RSA
命令是:keytool -printcert -file
<簽名文件RSA的路徑>
2.jarsigner -verify -verbose -certs Superuser.apk
此條未驗證成功

C. Android apk 系統簽名

因工作需要對系統的wifi和乙太網進行配置,需要獲取到系統許可權以後才能進行操作,因此研究了下對apk 進行系統簽名以獲取系統許可權,其實本來打算如果root可以的話直接通過root的方式(設備已經root),後來找了半天發現沒有api進行修改,無奈只能進行系統簽名了,有童鞋知道root方式修改不妨告訴我一下。

這些文件可以問系統廠商獲取,如果是原生系統可以到系統源碼目錄下獲取。

如果報以下的錯誤 ,這時候就用到准備的libconscrypt_openjdk_jni.so 文件

為了檢測我們的應用是否已經簽名成功 可以獲取系統許可權,看看能否獲取到。

結果:

在上一種方式中,我們成功對我們的apk進行了系統簽名,並且能使用系統許可權,但是必須每次打包出apk再進行簽名 對調試很不方便,下面我們可以生成帶有系統簽名的簽名文件,在項目中使用,就不需要每次手動進行簽名。

bubble可以替換為自己喜歡的名稱,這一步要輸入密碼,我嘗試輸入其他不行,只能輸入android。

bubble 可替換為自己喜歡的password和alias

到這里 兩種對app進行系統簽名的方式完成,如有不足,歡迎指出.

D. 通過AndroidStudio獲取簽名文件信息

1、查看apk安姿閉乎裝文件的簽名信息
右鍵解壓apk,態源打開其中的META-INF文件,得到其中的CERT.RSA文件。
在AndroidStudio中打開 Terminal 執行命令keytool -printcert -file XXX(XXX為CERT.RSA文件路跡悉徑)可以查看簽名的MD5、SHA1、SHA256值。
2、直接查看簽名文件的信息
在AndroidStudio中打開 Terminal 執行命令keytool -list -v -keystore XXX(XXX為簽名文件路徑)
再輸入密碼可以查看簽名的MD5、SHA1、SHA256值。

效果圖:

E. 我的android項目已經生成了簽名但不知道這個簽名是什麼也不知在哪查看

簽名的apk自己無法查看,是安裝的時候android系統驗證用的。
1.簽名的意義
為了保證每個應用程序開發商合法ID,防止部分開放商可能通過使用相同的Package Name來混淆替換已經安裝的程序,我們需要對我們發布的APK文件進行唯一簽名,保證我們每次發布的版本的一致性(如自動更新不會因為版本不一致而無法安裝)。
2.簽名的步驟
a.創建key
b.使用步驟a中產生的key對apk簽名
3.具體操作, 命令行下對apk簽名(原理)
創建key,需要用到keytool.exe (位於jdk1.6.0_24\jre\bin目錄下),使用產生的key對apk簽名用到的是jarsigner.exe (位於jdk1.6.0_24\bin目錄下),把上兩個軟體所在的目錄添加到環境變數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採用上述步驟簽名。

F. 怎樣查看android的apk文件的簽名

以下介紹查看自己的應用簽名及三方APK或系統APK簽名信息,包含其中的MD5、SHA1、SHA256值和簽名演算法等信息。

1、查看自己的應用簽名
可以通過兩種方式查看
(1) debug的apk通過Eclipse查看,如下圖:

可以查看簽名的MD5、SHA1、SHA256值及簽名演算法

G. Android系統簽名apk,讓應用獲取系統級許可權

使用手機的platform平台簽名後,能夠獲取到系統許可權。
1、在AndroidManifest.xml設置android:sharedUserId="android.uid.system"。

2、編譯通過後,導出未簽名的apk。
3、使用\鬧轎out\host\Linux-x86\framework\敏敏signapk.jar \build\target\proct\security\platform.pk8 +platform.x509.pem

4.執行「Java -jar signapk.jar platform.x509.pem platform.pk8 test.apk testSigned.apk」做平台簽名得到testSigned.apk。
test.apk必須放在上面同液拿肆一個目錄之下。

熱點內容
內部存儲空間怎麼清除 發布:2024-05-21 04:04:55 瀏覽:497
bilibili不能緩存 發布:2024-05-21 03:31:14 瀏覽:617
解壓剃發 發布:2024-05-21 03:16:27 瀏覽:641
伺服器怎麼連接到電腦顯示屏上 發布:2024-05-21 02:38:21 瀏覽:286
織夢安裝資料庫連接失敗 發布:2024-05-21 02:37:45 瀏覽:259
python編程入門經典pdf 發布:2024-05-21 02:31:45 瀏覽:7
arm編譯添加驅動 發布:2024-05-21 02:02:28 瀏覽:476
安卓設置頁面是怎麼 發布:2024-05-21 01:32:51 瀏覽:521
學生成績管理系統資料庫設計 發布:2024-05-21 01:14:41 瀏覽:43
我的世界什麼指令直接出現伺服器 發布:2024-05-21 01:10:00 瀏覽:397