我想计算classes.dex的CRC32并比较它以检查是否被篡改
我正在考虑将其用作zipfile.getentry,如下所示:
try{
ApplicationInfo ai = getPackageManager().getApplicationInfo(getPackageName(), 0);
ZipFile zf = new ZipFile(ai.sourceDir);
ZipEntry zen = zf.getEntry("classes.dex");
}
然后计算classes.dex的crc32并将其作为字符串返回。
任何人都可以帮忙修复它。
我想(ZipEntry fname)计算我不想提取apk并使用classes.dex作为字符串来计算我想要zipentry在旅途中计算而不从应用程序中提取
答案 0 :(得分:0)
import java.io.*;
import java.util.zip.CRC32;
import java.util.zip.Checksum;
public class ComputeCRC32 {
public static long getChecksumValue(Checksum checksum, String fname) {
try {
BufferedInputStream is = new BufferedInputStream(
new FileInputStream(fname));
byte[] bytes = new byte[1024];
int len = 0;
while ((len = is.read(bytes)) >= 0) {
checksum.update(bytes, 0, len);
}
is.close();
}
catch (IOException e) {
e.printStackTrace();
}
return checksum.getValue();
}
public static void main(String[] args) {
if (args.length != 1) {
System.err.println("Usage: java ComputeCRC32 <file>");
System.exit(1);
}
long cs = getChecksumValue(new CRC32(), args[0]);
System.out.println("crc32 " + args[0] + " : " + cs);
}
}
来源:http://www.rgagnon.com/javadetails/java-0416.html它还包含其他解决方案,在那里找到最合适的解决方案:)
答案 1 :(得分:0)
好运,运气不好。我想(ZipEntry fname)计算
我不想提取apk并使用classes.dex作为字符串来计算我想要zipentry在旅途中计算而不从应用程序中提取
再次运气不好,你必须。