0

我想在我的 android 应用程序中提供一个 md5 验证器,它比较服务器 md5 和刚刚在设备上创建的一个。输出应该是正确或不正确的,而不是用户必须比较哈希值。我已经发现可以通过

/system/xbin/busybox md5sum /sdcard/Download/FILENAME

. 当然,我可以将命令的输出打印到屏幕上,但这不是我想要的。因为我不想重新发明轮子,这样的东西已经可用了吗?SHA1 也是可能的,两种哈希都可用。

请帮忙!

4

2 回答 2

1

对于“服务器 md5”,我猜你的意思是服务器上另一个包含 md5 哈希的文件。

所以你可以下载 md5 文件,打开它并将里面的字符串与你计算的 md5 进行比较。

于 2013-03-27T15:17:56.407 回答
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;
}
于 2013-03-27T15:20:02.367 回答