我想在我的 android 应用程序中提供一个 md5 验证器,它比较服务器 md5 和刚刚在设备上创建的一个。输出应该是正确或不正确的,而不是用户必须比较哈希值。我已经发现可以通过
/system/xbin/busybox md5sum /sdcard/Download/FILENAME
. 当然,我可以将命令的输出打印到屏幕上,但这不是我想要的。因为我不想重新发明轮子,这样的东西已经可用了吗?SHA1 也是可能的,两种哈希都可用。
请帮忙!
对于“服务器 md5”,我猜你的意思是服务器上另一个包含 md5 哈希的文件。
所以你可以下载 md5 文件,打开它并将里面的字符串与你计算的 md5 进行比较。
我已经使用这种方法来计算 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;
}