我在 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 http://apachejava.blogspot.com/2011/02/hexconversions-convert-string-byte-byte.html
我还建议你关闭文件输入流在finally子句中
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)