2012-05-29 62 views
0

我需要計算csv文件的校驗和。每次更改文件中的數據時,校驗和都會發生變化。在這方面,我發現互聯網沒有什麼用處。如何在JSP中爲CSV文件生成md5校驗和

+1

谷歌告訴答案,閱讀:http://www.jguru.com/faq/view.jsp?EID=216274。您可以輕鬆地用MD5替換CRC32。 – Raptor

+1

@ShivanRaptor你應該將其作爲答案發布。 – Zoot

+0

@Zoot:雖然這不是正確的答案。 CheckedInputStream不支持MD5。 – BalusC

回答

2

首先,這個問題不是特定於JSP的。 JSP只是一個HTML代碼生成器。將Java代碼寫入JSP文件而不是普通的Java類不會使其成爲JSP問題。如果您專注於使用「Java」關鍵字解決未來的Java問題,而不是使用「JSP」關鍵字,那麼您會更加努力。

說,你可以使用MessageDigest你更新與從文件中讀取的字節。

FileInputStream input = new FileInputStream("/path/to/file.csv"); 
MessageDigest md5 = MessageDigest.getInstance("MD5"); 
byte[] buffer = new byte[10240]; 

for (int length = 0; (length = input.read(buffer)) > 0;) { 
    md5.update(buffer, 0, length); 
}  

byte[] hash = digest.digest(); 

您可能希望將散列轉換爲十六進制。

StringBuilder hex = new StringBuilder(hash.length * 2); 

for (byte b : hash) { 
    if ((b & 0xff) < 0x10) { 
     hex.append("0"); 
    } 

    hex.append(Integer.toHexString(b & 0xff)); 
} 

String hexString = hex.toString();