您现在的位置是: 首页 > 经典语录 经典语录

apk签名信息在哪个文件查看_2

ysladmin 2024-07-02 人已围观

简介apk签名信息在哪个文件查看       大家好,今天我想和大家分析一下“apk签名信息在哪个文件查看”的优缺点。为了让大家更好地理解这个问题,我将相关资料进行了整合,现在就让我

apk签名信息在哪个文件查看

       大家好,今天我想和大家分析一下“apk签名信息在哪个文件查看”的优缺点。为了让大家更好地理解这个问题,我将相关资料进行了整合,现在就让我们一起来分析吧。

1.如何查看apk签名和生成签名文件

2.如何判断 Android 应用的 Apk 签名是否一致

3.PHP获取安卓apk包里的apk签名

4.android怎样获取应用签名信息

5.如何通过eclipse 查看apk的签名

6.我的android项目已经生成了签名但不知道这个签名是什么也不知在哪查看

apk签名信息在哪个文件查看

如何查看apk签名和生成签名文件

       一般在证书包里面有个文档,上面都是有签名的。

       如果没有,那么久需要下载一个工具GenSignature安装到手机上面。

       安装好上述工具之后把apk包下载到手机上安装好。

       安装好之后打开GenSignature,然后输入你apk文件的包名,就可以查看签名了。

如何判断 Android 应用的 Apk 签名是否一致

       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

       此条未验证成功

PHP获取安卓apk包里的apk签名

       可以比对apk签名的fingerprint。

       假定安装了JDK,如果想查HelloWorld.apk所使用的签名的fingerprint,可以这样做:

       1. 查找apk里的rsa文件

       (Windows)

       > jar tf HelloWorld.apk |findstr RSA

       (Linux)

       $ jar tf HelloWorld.apk |grep RSA

       META-INF/CERT.RSA

       2. 从apk中解压rsa文件

       jar xf HelloWorld.apk META-INF/CERT.RSA

       3. 获取签名的fingerprints

       keytool -printcert -file META-INF/CERT.RSA

       ...

       Certificate fingerprints:

       MD5: BC:6D:BD:6E:49:69:2A:57:A8:B8:28:89:04:3B:93:A8

       SHA1: 0D:DF:76:F4:85:96:DF:17:C2:68:1D:3D:FF:9B:0F:D2:A1:CF:14:60

       Signature algorithm name: SHA1withRSA

       Version: 3

       ...

       4. 清理工作,删除rsa文件

       (Windows)

       rmdir /S /Q META-INF

       (Linux)

       rm -rf META-INF

android怎样获取应用签名信息

       所需工具:aapt,Android SDK中的工具,只有一个exe,可以直接运行。

        keytool,JDK中的工具,需要安装JDK环境。

        需要提供目标应用的apk

        1、获取包名

        例如:aapt.exe dump badging C:\Users\Administrator\Desktop\demo-apk-1.0.1.8791.apk > C:\Users\Administrator\Desktop\1.txt

        获取到的包名是com.pakgname.swbg

        2、获取签名

        SHA1: 56:BD:02:6B:9D:53:D7:F5:32:B2:BC:BD:BB:34:5B:F1:CD:EF:7F:C0

        这里借助github开源的类apkparser

        在项目composer.json中执行下面命令或修改composer.json引入即可

        方法二适用于没有JAVA环境的情况下,一般linux都会有openssl环境。

        原理:通过分析方法一中,发现apk包解压之后,里面会有.rsa签名证书,此证书是一个符合pki体系的x509证书,通过openssl命令即可查看信息。

如何通过eclipse 查看apk的签名

       android 应用签名获取方法如下:

       1、选择程序,右键--->android tools --->签名发布,按步骤生成一个签名keystore和一个经过签名的apk,安装该APK到手机;

       2、选择自己的程序,右键运行到手机

       3、下载签名应用,在手机中运行,根据提示输入程序的包名获得一个apk签名字符串,最后将这个字符串填到第一步的应用签名栏处。保存即可正常调试应用了。

       android 应用签名查看方法如下:

       (1) debug的apk通过Eclipse查看,如下图:

       (2) 某个keystore签名的应用,通过

       Javakeytool?-?list?-?keystore?E?:?\?Trinea?\?keystore?\?appsearch?.?keystore查看,会要求输入签名密码,默认为android,如下图:

我的android项目已经生成了签名但不知道这个签名是什么也不知在哪查看

       给apk文件签名主要分三步:1、创建证书2、签名3、优化(可选)1)使用jdk的keytool工具生成签名用的证书> keytool -genkey -v -alias CERT -keyalg RSA -keysize 2048 -validity 10000 -keystoreCERT.keystore 创建过程需要输入一些标识信息和密码,一些重要的参数值说明如下(根据自己的需要要进行相应的修改): CERT.keystore ---- 证书保存的文件名 CERT ---- 证书的别名 10000 ---- 10000天的有效期 2048 ---- 默认为1024 bits,Android 建议使用2048 bits或更高其他的详细信息可以使用keytool -help查看帮助 证书生成后使用如下命令可以查看证书的信息:> keytool -list -alias CERT -keystore CERT.keystore 2)使用jdk的jarsigner工具对apk文件签名> jarsigner -verbose -keystore CERT.keystore to_sign.apk CERT 签名过程需要输入证书的密码,一些重要的参数值说明如下(根据自己的需要要进行相应的修改): CERT.keystore ---- 证书保存的文件名 CERT ---- 证书的别名 待签名的apk文件根根目录下如果有文件夹“META-INFO”,请先删除(重新签名就需要这样做)。如果不想创建过程输出太多信息,可以删除“-verbose” 。上述签名会直接覆盖原来的文件,如果不想被覆盖而签名为另外的新文件 signed.akp,只需将 to_sign.apk 改为 -signedjar to_sign.apk signed.akp 即可。签名后可以使用如下命令验证是否签名成功: > jarsigner -verify to_sign.apk 如果需要查看更详细的验证信息,可修改为:> jarsigner -certs -verbose -verify to_sign.apk 3)使用android sdk的zipalign工具优化已签名的apk文件> zipalign -v 4 unaligned.apk aligned.apk 注意要在签名后再zipalign。这个工具不是jdk自带的,而是在%ANDROID_HOME%\tools\zipalign.exe。

       签名的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采用上述步骤签名。

       好了,关于“apk签名信息在哪个文件查看”的讨论到此结束。希望大家能够更深入地了解“apk签名信息在哪个文件查看”,并从我的解答中获得一些启示。