查看应用签名android
① 如何获取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
此条未验证成功
② android 怎么查看签名文件
方法/步骤
对apk的签名需要把项目导入到android
studio软件中,进行点击菜单中“build”选项,弹出的下拉菜单中的“generate
signed
apk”.
进入到generate
signed
apk中界面框中,因第一次对apk的签名,就需要先创建签名文件钥匙,点击”create
new“的按钮。
进行选择钥匙保存的位置,指定到磁盘的位置,然后在文件昵称填入,点击“ok”的选项。
进入到new
key
store的界面中,根据界面中提示信息输入内容信息,输入完成之后点击“ok”。
钥匙创建完成之后,进行点击"next下一步"操作。
在进入到这个界面中选择apk生成保存的位置,然后在build
type中选择release的选项,然后点击“finish”的选项,这样就生成到apk的保存路径中。
③ 怎么查看android app的签名
To sign an Android APK from command line: Sign the APK with jarsigner (using default keystore, android-root is the alias of the signing key): $ jarsigner -signedjar HelloWorld-new.apk HelloWorld-debug-unaligned.apk android-root Enter Passphrase for keystore: password Verify signature (optional) $ jarsigner -verify -verbose -certs HelloWorld-new.apk Align the APK (must use -v 4 option): $ ~/android-sdk-linux_86/tools/zipalign -v 4 HelloWorld-new.apk HelloWorld-new-aligned.apk 查看原帖>>
④ 我的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采用上述步骤签名。
⑤ android 应用签名怎么获取
方法/步骤
1
1 win7,开始菜单,搜索cmd
2
2 打开cmd
3
3 进入.android
4
4 使用命令keytool -list -v -keystore debug.keystore
5
5 需要安装keytool,办法是安装jdk,网络搜索jdk并下载安装;具体平台按实际情况选择
6 安装完毕,进入到jdk安装bin目录,并复制地址
7 回到cmd命令窗口,输入cd + 空格,并在标题栏右侧点击粘贴
8 回车,进入到这个目录
9 再次输入keytool -list -v -keystore debug.keystore命令并回车,出现错误
10 先执行以下命令keytool -genkey -v -keystore debug.keystore -alias androiddebugkey -keyalg RSA -validity 10000
11 按提示输入密码(自己定),密保答案等;到后来需要重新再输入密码,生成完成
12 到keytool目录下,看到debug.keystore已经生成成功
13 将这个文件复制到.android文件夹下
14 现在再次键入生成android签名的命令:keytool -list -v -keystore debug.keystore,按提示输入密码,即可成功生成签名
15 在标题栏右键选择标记复制其中的SHA1的值,即为android的签名
⑥ 怎样查看android的apk文件的签名
操作如下:
1,通过apktool工具解压当前apk(比如:demo.apk),解压后,会生成CERT.RSA文件
**** apktool d demo.apk。备注:通过这种方式解压出来的Androidmenifest.xml文件可以通过文件编辑器打开查看
2,通过keytool命令获取签名信息
keytool -printcert -file C:-INFCERT.RSA所有者: CN=ryt, OU=ryt, O=ryt, L=nanjing, ST=china, C=cn发布者: CN=ryt, OU=ryt,O=ryt, L=nanjing, ST=china, C=cn
⑦ android studio怎么看应用是否签名
我们在使用Android Studio进行应用的发布时要进行签名,本经验将通过我的一个应用的签名过程教大家如何签名。
工具/原料
Android Studio
一个自己以前使用的key当然没有可以自己生成一个
方法/步骤
第一步我们打开我们下载安装好的Android Studio
然后我们选择好了我们的要发布的项目选择Build
然后选择Generate Signed APK
然后可以选择创建或者选择一个已有的key,我这里选择以前创建好的一个key文件
然后输入密码等信息,点击next
然后点击finish,选择release版本
我们就可以看到生成的apk文件了,然后我们就可以把应用发布到各平台供人下载了
⑧ android studio怎么查看apk 签名
1、查看自己的应用签名
可以通过两种方式查看
(1) debug的apk通过Eclipse查看,
eclipse-view-signatures
(2) 某个keystore签名的应用,通过
java
keytool -list -keystore E:\Trinea\keystore\appsearch.keystore
1
keytool -list -keystore E:\Trinea\keystore\appsearch.keystore
查看,会要求输入签名密码,默认为android,
keytool-list-view-signatures
2、查看三方应用或是系统应用签名
用winrar打开待查看的apk,将其中META-INF文件夹解压出来,得到其中的CERT.RSA文件,通过
Java
keytool -printcert -file META-INF/CERT.RSA
keytool -printcert -file META-INF/CERT.RSA
命令打印证书信息,如微信证书信息
keytool-printcert-view-signatures
可以查看签名的MD5、SHA1、SHA256值及签名算法
PS:网络地图API需要签名做为安全码一部分实在有点不能理解,太麻烦了。
⑨ 如何查看android 应用签名
1、查看自己的应用签名可以通过两种方式查看(1) debug的apk通过Eclipse查看,:
(2) 某个keystore签名的应用,通过
Java
keytool -list -keystore E:\Trinea\keystore\appsearch.keystore
查看,会要求输入签名密码,默认为android,:
2、查看三方应用或是系统应用签名用winrar打开待查看的apk,将其中META-INF文件夹解压出来,得到其中的CERT.RSA文件,通过
Java
keytool -printcert -file META-INF/CERT.RSA
命令打印证书信息,如微信证书信息:
可以查看签名的MD5、SHA1、SHA256值及签名算法
⑩ 如何查看 android 数字签名
用java命令查看,如下:
C:\jdk1.6.0_10\bin>jarsigner.exe -verify f:\ICBCAndroidBank.apk
jar 已验证
什么是数字签名?
数字签名就是为你的程序打上一种标记,来作为你自己的标识,当别人看到签名的时候会知道它是与你相关的。
为什么要数字签名?
Android系统要求每一个Android应用程序必须要经过数字签名才能够安装到系统中,也就是说如果一个Android应用程序没有经过数字签名,是没有办法安装到系统中的!
Android通过数字签名来标识应用程序的作者和在应用程序之间建立信任关系,不是用来决定最终用户可以安装哪些应用程序。
这个数字签名由应用程序的作者完成,并不需要权威的数字证书签名机构认证,它只是用来让应用程序包自我认证的。