當前我正在嘗試生成大型數據文件(10mb +)的MD5。我當前的邏輯生成一個MD5,但是切斷了MD5的第一個字符。此外,這個過程相當緩慢,至少需要三十秒以上。MD5的生成速度很慢並且缺少第一個字符
我該如何才能切斷MD5的第一個字符?
如何加快生成過程?
修訂當前代碼:
File PATH = Environment.getExternalStorageDirectory();
File DATAFILE = new File(PATH + "/stuff/content/" + FILE);
Context context = MyApp.getAppContext();
MessageDigest md = MessageDigest.getInstance("MD5");
FileInputStream fis = new FileInputStream(DATAFILE);
BufferedInputStream in = new BufferedInputStream(fis);
// generate MD5
byte[] dataBytes = new byte[1024];
int byteCount;
while ((byteCount = in.read(dataBytes)) > 0) {
md.update(dataBytes, 0, byteCount);
}
byte[] digest = md.digest();
// convert to readable string
String MD5;
StringBuffer hexString = new StringBuffer();
for (int i=0; i<digest.length; i++)
hexString.append(Integer.toHexString(0xFF & digest[i]));
MD5 = hexString.toString();
Log.i("GENERATED MD5", MD5);
結果: 02-19 15:44:59.528:I/GENERATED MD5(24222):cd8f8438957ea9db758ddd12d86e2ca
應該是: 「MD5」: 「0cd8f8438957ea9db758ddd12d86e2ca」
謝謝。
但是,這是否會導致我錯過了第一個字符? – 2012-02-20 04:18:27
修正了邏輯。看看上面。仍然得到相同的結果... – 2012-02-20 04:37:15
仍然有缺少第一個字符的問題...張貼我最新的邏輯。 – 2012-02-20 16:19:49