在你發佈的代碼中,你得到了md5散列的字節數組。 PHP的md5()函數以十六進制形式返回md5散列。
所以,如果你想獲得MD5哈希在java字符串處理,你可以像這樣:
private static String getMD5(String input) {
try {
byte[] bytesOfMessage = input.getBytes("UTF-8");
MessageDigest md = MessageDigest.getInstance("MD5");
// byte array of md5 hash
byte[] md5 = md.digest(bytesOfMessage);
// we convert bytes to hex as php's md5() would do
StringBuffer stringBuffer = new StringBuffer();
for (int i = 0; i < md5.length; i++) {
stringBuffer.append(Integer.toString((md5[i] & 0xff) + 0x100, 16).substring(1));
}
return stringBuffer.toString();
} catch (Exception e) {
}
return null;
}
從PHP,你可以通過做md5('some string', true)
獲取該行MD5二進制文件。有關它的功能文檔,請參見md5()。
要獲取字節數組,您可以執行unpack('c*', md5('some string',true))
。有關更多信息,請參見unpack()函數和可能的formats。
不,代碼在不同的問題 – genesis
代碼是不同的,你可以從中獲得幫助並在你的代碼上實現,沒有人會爲你提供確切的代碼。 –
當我在String中執行String md5Value = new String(md.digest(bytesOfMessage));在PHP中它相當於echo md5($ str,true);你能提出如何將md5($ str,true)轉換爲md.digest(bytesOfMessage)? – genesis