【问题标题】:verify md5sum on android在 android 上验证 md5sum
【发布时间】:2013-03-27 15:10:41
【问题描述】:
我想在我的 android 应用程序中提供一个 md5 验证器,它比较服务器 md5 和刚刚在设备上创建的一个。
输出应该是正确或不正确的,而不是用户必须比较哈希值。
我已经发现可以通过
获取android上的哈希值
/system/xbin/busybox md5sum /sdcard/Download/FILENAME
。当然,我可以将命令的输出打印到屏幕上,但这不是我想要的。
因为我不想重新发明轮子,这样的东西已经可用了吗? SHA1 也是可能的,两种哈希都可用。
请帮忙!
【问题讨论】:
标签:
android
busybox
md5sum
【解决方案1】:
我已经用这个方法来计算 Android 应用程序内部的 md5
private String getMD5(String file){
String md5 = "";
try {
MessageDigest md = MessageDigest.getInstance("MD5");
FileInputStream is = this.openFileInput(file);
DigestInputStream dis = new DigestInputStream(is, md);
byte data[] = new byte[1024];
@SuppressWarnings("unused")
int count;
while ((count = dis.read(data)) != -1) {
}
byte[] digest = md.digest();
for (int i=0; i < digest.length; i++) {
md5 += Integer.toString( ( digest[i] & 0xff ) + 0x100, 16).substring( 1 );
}
return md5;
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return md5;
}
【解决方案2】:
“服务器 md5”我猜你是指服务器上另一个包含 md5 哈希的文件。
所以你可以下载 md5 文件,打开它并将里面的字符串与你计算的 md5 进行比较。