Android,从文件计算 SHA-1 哈希,最快的算法

标签 android performance file hash sha

我在 Android 上遇到 SHA-1 性能问题。在 C# 中,我在大约 3 秒内得到计算的哈希,Android 的相同计算大约需要 75 秒。我认为问题出在从文件中读取操作,但我不确定如何提高性能。

这是我的哈希生成方法。

private static String getSHA1FromFileContent(String filename)
    {

        try
        {
            MessageDigest digest = MessageDigest.getInstance("SHA-1");
            //byte[] buffer = new byte[65536]; //created at start.
            InputStream fis = new FileInputStream(filename);
            int n = 0;
            while (n != -1)
            {
                n = fis.read(buffer);
                if (n > 0)
                {
                    digest.update(buffer, 0, n);
                }
            }
            byte[] digestResult = digest.digest();
            return asHex(digestResult);
        }
        catch (Exception e)
        {
            return null;
        }
    }

有什么办法可以提高性能吗?

最佳答案

我在我的 SGS (i9000) 上对其进行了测试,为一个 10.1MB 的文件生成哈希值需要 0.806 秒。

唯一不同的是,在我的代码中,除了 FileInputStream 和十六进制转换库之外,我还使用了 BufferedInputStream:

http://apachejava.blogspot.com/2011/02/hexconversions-convert-string-byte-byte.html

此外,我建议您在 finally 子句中关闭文件输入流

关于Android,从文件计算 SHA-1 哈希,最快的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5564643/

相关文章:

java - 如何使用git管理不同包中的相同java代码?

python - 我将如何改善/使其运行更快?

android - 安全发送电子邮件附件

performance - SAS:通过 proc 导入提高 do 循环的速度

javascript - 什么是更好的?切换可见性或操作文本

php - 一个 PHP 脚本可以让用户从我的网站下载文件而不显示我网站中的实际文件链接?

javascript - 无法使用 Blob 对象在客户端打开 `docx` 文件 - vanilla JavaScript

android - 如何在 ListView 中绘制圆角矩形形状的项目

android - API 23 中遇到的 RenderScript 不稳定

java - 当用户按下后退时取消正在进行的连接