Javaクライアントで計算して確認する必要があるUTF-8hash_fileの出力があります。hash_fileのマニュアルに基づいて、ファイルの内容を抽出し、JavaでMD5ハッシュヘックスを作成していますが、それらを一致させることはできません。[この質問]について提案を試みましたが、成功しませんでした2。
これが私がJavaでそれを行う方法です:
public static String calculateStringHash(String text, String encoding)
throws NoSuchAlgorithmException, UnsupportedEncodingException{
MessageDigest md = MessageDigest.getInstance("MD5");
return getHex(md.digest(text.getBytes(encoding)));
}
私の結果はこのページの結果と一致します。
例えば:
ストリングジェイク: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が暗号化されていることを確認しました。何か案は?