我腦海中的某個東西告訴我我錯過了一些明顯的東西。MessageDigest MD5算法沒有返回我期望的結果
我正在使用api密鑰的md5哈希進行身份驗證的第三方API集成了現有的Java項目。它不適合我,在調試過程中,我意識到我生成的哈希表與他們提供的示例不匹配。我發現一些網站可以通過字符串創建MD5哈希來檢查他們的例子,並且據我所知,我錯了,他們是對的。
例如,根據this website,字符串「hello」生成「5d41402abc4b2a76b9719d911017c592」的散列。 (FWIW我對這個網站一無所知,只是它似乎正確地散列了我所擁有的例子)。當我通過我的代碼運行它,我得到:
XUFAKrxLKna5cZ2REBfFkg ==
下面是一個簡單的方法,我用生成MD5哈希/串:
private String md5(String md5Me) throws Exception {
MessageDigest md = MessageDigest.getInstance("MD5");
md.reset();
md.update(md5Me.getBytes("UTF-8"));
return Base64.encodeBase64String(md.digest());
}
我用了一個很類似的方法可以在上週使用SHA1算法成功驗證不同的API。我想知道如果問題是相關的org.apache.commons.net.util.Base64.encodeBase64String ...任何幫助非常感謝,如果只有一些測試,看看如果byteArray是正確的,但轉換的字符串是錯誤的。
md.digest()應該包含您正在查找的字節,您使用Base64算法進一步對它們進行編碼並獲得不同的結果 – hoaz
我需要將這些字節轉換爲http請求的字符串,是否有更好的方法可以做到這一點? – eric
新的字符串(字節[]字節) – Andy