Java中使用java.util.zip包读取APK中的RSA信息
2014-09-11 07:56
399 查看
为什么用java.util.zip
zip包可以在不解压包的情况下,获取指定文件的流,这样可以一个普遍的规则来获取指定文件的内容。例如,APK中RSA信息存在在META-INF目录下,并且后缀名为RSA,这样就可以唯一获取到它。当然,也可以获取我们任何想要的文件信息。当然对于APK,也可以直接全部解压出来再读取文件,这不是我想要的,因此,在多线程情况下,为此需要保存一个目录与APK的映射关系。
为什么能读取APK文件
可以注意到,直接将APK文件的后缀改成ZIP,文件也是能正常解压的。这是表象。关于内延,可以去参阅APK的生成规则,可以发现这两者的编码规则是一致的!代码
/*** Get the RSA infomation from APK file
*
* @param ApkPath the path of apkFile
* @return RSA String that base on BASE64
*/
public String getApkRSAContent(String apkPath){
byte[] buf =null;
ZipFile zipFile = null;
try {
zipFile = new ZipFile(apkPath);//打开ZIP、APK文件
Enumeration<?> zipEnum = zipFile.entries(); //获取包中的文件入口(所以文件,包括各级目录下)
while (zipEnum.hasMoreElements()) {
ZipEntry entry = (ZipEntry) zipEnum.nextElement();
if (entry.getName().contains("META-INF")//RSA信息存放在META-INF/*.RSA
&& entry.getName().contains("RSA")) {
InputStream input = null;
input = zipFile.getInputStream(entry);
int size = input.available();//获取文件大小
buf = new byte[size];
int ret =0;
do{
ret = input.read(buf,0,size);
}while(ret != -1);
return Base64.encodeToString(buf, false);//RSA为二进制信息,有些字符不可见,采用Base64编码返回
}
}
}catch(IOException e){
e.printStackTrace();
}finally {
try {
zipFile.close();
} catch (IOException e) {
e.printStackTrace();
}
}
// log "apk中没有RSA信息";
return null;
}
总结
java.util.zip包,可以在不解压文件的情况下读取包中的内容,对解析压缩包,有很大的帮助。相关文章推荐
- 使用java.util.Properties读取配置文件信息
- java压缩与解压缩(1)使用java.util.zip
- 使用Android系统隐藏api 读取*.apk 程序安装包信息
- 读取资源属性文件(properties)java.util.ResourceBundle使用详解
- java读取ipa、apk文件中的配置信息
- java.util.zip包在解压缩文件方面入门使用
- [Java]读取.RSA密钥信息及获取KEYSTORE指纹信息
- android 开发之 使用Android系统隐藏api 读取*.apk 程序安装包信息
- java使用android aapt获取APK信息
- java.util.ResourceBundle使用详解(读取资源属性文件)
- Java——ProcessBuilder类的使用及获取APK信息
- 使用java.util.zip对字符串进行压缩和解压缩
- 使用java.util.zip对字符串进行压缩和解压缩
- 使用java.util.zip包压缩和解压缩文件
- JAVA实现压缩文件的方法(使用java.util.zip.*)
- 一个用java.util.zip创建和读取zip文件的类,可以操作目录
- 用java中的java.util.zip包读取压缩文件
- JAVA使用AXMLPrinter获取APK中Androidmanifest.xml信息
- Android linux下重新打包apk 报错 java.util.zip.ZipException: error in opening zip file
- JAVA读取.RSA密钥信息及获取KEYSTORE指纹信息