我有我需要計算和檢查我的Java客戶端的UTF-8 hash_file的輸出。根據hash_file manual我提取文件的內容並在Java上創建MD5哈希十六進制,但我無法使它們匹配。我嘗試了[這個問題]的建議,但沒有成功2。比較PHP hash_file與Java輸出
以下是我做的關於Java:
public static String calculateStringHash(String text, String encoding)
throws NoSuchAlgorithmException, UnsupportedEncodingException{
MessageDigest md = MessageDigest.getInstance("MD5");
return getHex(md.digest(text.getBytes(encoding)));
}
我的結果從this page匹配的。
例如:
字符串傑克:1200cf8ad328a60559cf5e7c5f46ee6d
從我的Java代碼:1200CF8AD328A60559CF5E7C5F46EE6D
但在文件試圖當它不工作。這裏是文件功能的代碼:
public static String calculateHash(File file) throws NoSuchAlgorithmException,
FileNotFoundException, IOException {
BufferedReader br = null;
StringBuilder sb = new StringBuilder();
try {
String sCurrentLine;
br = new BufferedReader(new FileReader(file));
while ((sCurrentLine = br.readLine()) != null) {
sb.append(sCurrentLine);
}
} catch (IOException ex) {
LOG.log(Level.SEVERE, null, ex);
} finally {
try {
if (br != null) {
br.close();
}
} catch (IOException ex) {
LOG.log(Level.SEVERE, null, ex);
}
}
return calculateStringHash(sb.toString(),"UTF-8");
}
我驗證了在PHP端使用hash_file和UTF-8是加密。有任何想法嗎?
UTF-8是[編碼](http://en.wikipedia.org/wiki/Character_encoding),不是加密。 – Gumbo