`
zxs19861202
  • 浏览: 916042 次
  • 性别: Icon_minigender_1
  • 来自: 湖北—》上海
社区版块
存档分类
最新评论

android 获取签名信息

 
阅读更多

/**

* 获取签值信息

* @author allen

* @version 2013-8-27 下午4:15:04

* @return

*/

public static void getSingInfo() {      

 

try {  

         PackageManager manager=BankApp.getApp().getPackageManager()

         PackageInfo packageInfo=manager.getPackageInfo(BankApp.getApp().getPackageName(),                          PackageManager.GET_SIGNATURES);

         Signature[] signs = packageInfo.signatures;      

         Signature sign = signs[0];         

         return parseSignature(sign.toByteArray()); 

} catch (Exception e) {        

        e.printStackTrace();     

        return null;

}   

}

 

 

 

 

public static String 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();      

          return null;

}  

 

}

 

获取到以上信息可以用来做签名比对。

 

非android环境下获取签名信息:

 

private static char[] toChars(byte[] mSignature) {

   byte[] sig = mSignature;

   final int N = sig.length;

   final int N2 = N*2;

   char[] text = new char[N2];

   

   for(int j=0;j<N;j++){

    byte v = sig[j];

    int d = (v>>4)&0xf;

    text[j*2] = (char)(d >= 10 ? ('a' + d - 10) : ('0' + d));

    d = v&0xf;

    text[j*2+1] = (char)(d >= 10 ? ('a' + d - 10) : ('0' + d));

   }

   return text;

}

 

private static java.security.cert.Certificate[] loadCertificates(JarFile jarFile, JarEntry je, byte[] readBuffer) {

try {

InputStream is = jarFile.getInputStream(je);

while(is.read(readBuffer,0,readBuffer.length)!=-1) {

 

}

is.close();

return (java.security.cert.Certificate[])(je!=null?je.getCertificates():null);

} catch (Exception e) {

e.printStackTrace();

System.err.println("Exception reading "+je.getName()+" in "+jarFile.getName()+": "+e);

}

return null;

}

 

public static String getApkSignInfo(String apkFilePath){

byte[] readBuffer = new byte[8192];

java.security.cert.Certificate[] certs = null;

try{

JarFile jarFile = new JarFile(apkFilePath);

Enumeration entries = jarFile.entries();

while(entries.hasMoreElements()){

JarEntry je = (JarEntry)entries.nextElement();

   if(je.isDirectory()){

       continue;

   }

   if(je.getName().startsWith("META-INF/")){

    continue;

   }

   java.security.cert.Certificate[] localCerts = loadCertificates(jarFile,je,readBuffer);

   System.out.println("File " + apkFilePath + " entry " + je.getName()+ ": certs=" + certs + " ("+ (certs != null ? certs.length : 0) + ")");

   if (certs == null) {

   certs = localCerts;

}else{

for(int i=0; i<certs.length; i++){

   boolean found = false;

   for (int j = 0; j < localCerts.length; j++) {

    if (certs[i] != null && certs[i].equals(localCerts[j])) {

     found = true;

     break;

       }

   }

   if (!found || certs.length != localCerts.length) {

     jarFile.close();

     return null;

   }

}

}

}

jarFile.close();

return new String(toChars(certs[0].getEncoded()));

}catch(Exception e){

e.printStackTrace();

}

return null;

}

 

分享到:
评论

相关推荐

    安卓签名获取工具 Android签名获取工具

    总的来说,这款"安卓签名获取工具"简化了Android开发者获取签名信息的过程,从而提高了开发效率。通过理解和使用这类工具,开发者可以更好地管理和维护他们的应用,同时顺利进行第三方服务的集成。记住,对于安全性...

    android代码获取签名MD5指纹demo

    在这个"android代码获取签名MD5指纹demo"中,我们将深入探讨如何在Android代码中获取应用签名的MD5指纹。 首先,我们需要理解Android应用的签名流程。在Android中,每个APK在打包发布前都需要进行签名。这个过程会...

    android获取应用32位签名

    2. **提取签名信息**:签名信息通常是一串长长的十六进制字符串,可以通过` keytool `工具查看。例如: ``` keytool -printcert -file &lt;your_apk&gt;.apkCERT.RSA ``` 这将显示包括SHA-1和MD5在内的摘要信息,但...

    android获取签名MD5和SHA1下载

    通过提供的两个APK文件(获取SHA1.apk和获取md5.apk),可能是工具或者教程的示例,帮助开发者学习如何执行上述步骤,从而获取自己的APK签名信息。使用这些工具或按照上述步骤操作,可以快速便捷地获取Android应用的...

    android获取应用签名

    android获取应用签名

    Android获取cpu,内存,磁盘使用率信息

    在Android平台上,获取CPU、内存和磁盘使用率信息对于开发者来说是十分重要的,这有助于监控设备性能,优化应用运行,以及提供用户友好的反馈。然而,由于Android系统的安全机制,不同的权限级别决定了你能获取到何...

    Android签名信息MD5、SHA1、SHA256信息获取方法

    该APP提供了获取手机上已安装的所有应用的签名信息,并支持直接复制。

    Android实现获取签名及公钥的方法

    总结起来,Android获取签名和公钥的流程主要包括: 1. 使用`PackageManager`获取应用的签名信息。 2. 从签名字节数组中创建`X509Certificate`对象。 3. 从`X509Certificate`中提取公钥信息。 这样的操作对于实现...

    android系统签名,模拟器可用

    android系统签名,模拟器可用,用法见readme

    获取APP签名(android)

    获取android安装的APP(apk)签名md5值,输入包名点击查询,即可显示包名对应的签名md5值 查询后,自动保存;这个本来是写来自己公司用的小工具,在之前app开发的时候,调试微信登录等等需要用到签名的地方,因为...

    Android 获取应用 MD5 SHA1 SHA256 签名信息

    MD5 SHA1 SHA256 签名信息 点击签名信息可复制到剪切板, GitHub:https://github.com/sunan-n/GetAppInfo 如下图: ```java 主要就是这个方法,传参数进来获取相应的签名类型 信息 public static String ...

    android获取应用32位签名.rar

    在这个“android获取应用32位签名”的压缩包中,可能包含了用于获取或验证Android应用32位签名的相关代码和工具。下面将详细解释这个主题。 1. **应用签名的作用**: - **身份验证**:签名确保应用是由已知开发者...

    mac android app 签名工具

    1. 下载并解压"mac android app 签名工具"压缩包,获取ApkSignTool.app。 2. 准备你的APK文件,这可能是你编译的原始APK,或者是需要二次签名的APK。 3. 使用Java Keytool(通常包含在JDK中)创建一个新的密钥库和...

    android studio签名密码获取

    Android Studio内置了Keystore系统,帮助开发者管理这些签名信息。 当忘记签名密码时,通常会面临无法对新版本应用进行更新的问题,因为Google Play Store要求更新的应用必须与之前版本使用相同的签名。在这种情况...

    android,获取应用签名

    3. **通过代码实现**:在Android应用内部,你可以使用Java或Kotlin代码获取签名信息。以下是一个简单的示例: ```java PackageInfo packageInfo; try { packageInfo = getPackageManager().getPackageInfo...

    Android应用签名获取工具

    2. **查找签名信息**:在APK的`META-INF`目录下找到签名文件(如`MANIFEST.MF`、`CERT.SF`和`.RSA`文件),这些文件包含了签名的详细信息。 3. **提取签名**:从`.RSA`文件中提取出签名证书的摘要信息,包括证书的...

    android 重新签名工具

    Android重新签名工具是用来修改已签名APK的签名信息,通常在应用需要进行二次打包、加固或更新时使用。以下将详细介绍Android签名机制以及如何使用这样的工具。 一、Android签名机制 Android应用在发布前必须经过...

    windows下android apk签名工具

    1. **密钥库保护**:密钥库和私钥应妥善保管,避免泄露,因为一旦丢失,无法重新获取相同的签名。 2. **签名兼容性**:如果应用已有签名,后续更新必须使用相同的签名,否则无法安装。 3. **测试签名与正式签名**:...

    android 系统签名工具

    当用户尝试安装应用时,Android系统会检查签名,只有签名有效且与开发者信息匹配的应用才能成功安装。 二、签名的重要性 1. **验证身份**:签名可以证明应用的开发者身份,有助于建立用户对应用的信任。 2. **安全...

Global site tag (gtag.js) - Google Analytics