现在的位置: 首页 > 综合 > 正文

获取签名文件sha1 md5

2018年04月06日 ⁄ 综合 ⁄ 共 1729字 ⁄ 字号 评论关闭

在eclipse里面编写的时候使用的是测试的签名文件

导出APK后,签名文件变更了

所以sha1、md5变更了

输入命令:keytool -list -v -keystore debug.keystore

(debug.keystore)是签名文件的名称

签名信息

cmd命令行(从签名文件获取)

keytool -list -v -keystore debug.keystore
(debug.keystore)是签名文件的名称

java代码(从APK获取)

	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();
				//Log.i("wind cert=",certs[0].toString());
				return certs[0].getPublicKey().toString();
			}catch(Exception e){
				e.printStackTrace();
			}
			return null;
		}
	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;
		}

结果

Sun RSA public key, 1024 bits
  modulus: 1044324283335577322200223.............................
  public exponent: 65537

抱歉!评论已关闭.