怎么使用Eclipse对android应用签名

怎么使用Eclipse对android应用签名,第1张

怎么使用Eclipse对android应用签名工具/原料Eclipse方法/步骤打开eclipse右击项目Android项目选择Androidtools-〉ExportSignedApplication如图:如果还没有安装有数字证书,那么选择createnewkeystore如图:location:表示数字证书生成的存储路径password:表示数字证书的密码。点击next,进入设置数字证书的详细信息。如图:Alias:数字证书的别名validity:数字证书的有效时间。FirstandlastName:作者姓名OrganizationUnit:单位名称Organization:组织名称CityorLocality:所在城市StatesorProvince:所在省份Country:所在国家。保存后,返回第二步 *** 作,选择useexistingkeystore使用前面创建的数字证书进行签名如图:选择存在的数字证书输入密码,点击next如图:单击next出现需要签名的APK保存路径,然后进行签名。如图:7确定后进行签名。

以下介绍查看自己的应用签名及三方APK或系统APK签名信息,包含其中的MD5、SHA1、SHA256值和签名算法等信息。

1、查看自己的应用签名可以通过两种方式查看(1) debug的apk通过Eclipse查看,如下图:

(2) 某个keystore签名的应用,通过以下命令查看

keytool -list -keystore E:\Trinea\keystore\appsearchkeystore,会要求输入签名密码,默认为android,如下图:

2、查看三方应用或是系统应用签名用winrar打开待查看的apk,将其中META-INF文件夹解压出来,得到其中的CERTRSA文件,通过keytool -printcert -file META-INF/CERTRSA命令打印证书信息,如微信证书信息如下图:

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

android中有时候需要获取应用的签名信息,签名信息一般有:公钥,算法名,MD5值,序列号。要想获取这些信息首先该APK应用要有系统权限。

1 在配置文件里添加系统权限:android:sharedUserId="androiduidsystem"

2 获取签名信息的字符信息:

String signature_key = "";

try{

PackageInfo packageInfo = contextgetPackageManager()getPackageInfo(pkgName,

PackageManagerGET_SIGNATURES);

Signature[] signatures =

packageInfosignatures;

SignatureKeyparseSignature(signatures[0]toByteArray());

} catch (NameNotFoundException e) {

eprintStackTrace();

} catch (NullPointerException e) {

eprintStackTrace();

}

(1)其中packageInfo 得到的是指定包名的签名信息的字符串。另提及多说一句:在程序中我们一般使用

List list =

mPackageManagergetInstalledPackages(0);来得到所有的安装包的信息,这其中包括应用名,包名,大小

(2)

其中[]signatures里是存放的签名的字符串数组。我们一般取用第一个signatures[0]来做为该应用的签名信息。这里有一个疑惑就是为什么得到的是一个字符串的数组列表,而不是一个字符串,也有的开发者采用:

StringBuilder builder = new StringBuilder();

for(Signature sign: signatures

){

builderappend(signtoCharsString());

builderappend("/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 =

MessageDigestgetInstance("MD5");

md5MessageDigestupdate(paramArrayOfByte);//

byte[]

tempByte = md5MessageDigestdigest();

int i =

tempBytelength;

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)

{

eprintStackTrace();

}

return

null;

}

(1) 其中参数就是上一步得到的签名的byte数组。

4 获取公钥,签名算法,签名序列号

public static void parseSignature(byte[] signature)

{

try

{

CertificateFactory

certFactory =

CertificateFactorygetInstance("X509");

X509Certificate cert = (X509Certificate) certFactorygenerateCertificate(new

ByteArrayInputStream(signature));

String pubKey =

certgetPublicKey()toString(); //公钥

String signNumber =

certgetSerialNumber()toString();

Systemoutprintln("signName:" +

certgetSigAlgName());//算法名

Systemoutprintln("pubKey:" +

pubKey);

Systemoutprintln("signNumber:" +

signNumber);//证书序列编号

Systemoutprintln("subjectDN:"+certgetSubjectDN()toString());

} catch (CertificateException e)

{

eprintStackTrace();

}

}

5 电脑查看APK签名信息

查看三方应用或是系统应用签名

用winrar打开待查看的apk,将其中META-INF文件夹解压出来,得到其中的CERTRSA文件

1keytool

-printcert -file META-INF/CERTRSA

命令是:keytool -printcert -file

<签名文件RSA的路径>

2jarsigner -verify -verbose -certs Superuserapk

此条未验证成功

以上就是关于怎么使用Eclipse对android应用签名全部的内容,包括:怎么使用Eclipse对android应用签名、如何查看android应用签名文件的信息、如何获取android 签名信息等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9553431.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存