当前位置:首页 » 安卓系统 » 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 02:38:21 浏览:285
织梦安装数据库连接失败 发布:2024-05-21 02:37:45 浏览:258
python编程入门经典pdf 发布:2024-05-21 02:31:45 浏览:6
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
星等算法 发布:2024-05-21 00:53:06 浏览:509
李兴华的java视频 发布:2024-05-21 00:49:55 浏览:605
数据库4种索引类型 发布:2024-05-21 00:47:29 浏览:241