2013-04-10 259 views
0

我需要在md5中編碼一個字符串,然後它將字節轉換爲2個字符的十六進制編碼。PHP等價於JAVA HexUtils.bytesToHex()

我有這個簡短的JAVA片段,需要將其轉換爲PHP。

// Condensed the message and do MD5 
    try { 
    MessageDigest md = MessageDigest.getInstance("MD5"); 
    byte[] data = cleartext.getBytes(ENCODING); 
    md.update(data); 
    byte[] digestedByteArray = md.digest(); 
    // Convert digested bytes to 2 chars Hex Encoding 
    md5String = HexUtils.bytesToHex(digestedByteArray); 

    } catch (NoSuchAlgorithmException ns) { 
    ns.printStackTrace(); 
    } catch (UnsupportedEncodingException ex) { 
    ex.printStackTrace(); 
    } 

我不太清楚如何在PHP中實現這一點。 ENCODINGUTF-8

我在PHP是什麼

$md5String = md5($clearText); 
$hexString = ""; 

for($i = 0; $i < strlen($md5String); $i++) { 
    $hexString .= dechex(ord($md5String[$i])); 
} 

但產量是不同的,所以我覺得我失敗的進制轉換。

那麼這個JAVA代碼片段的正確端口是什麼?

回答

2

md5的輸出已經是一個十六進制編碼的字符串,所以沒有其他任何你需要做的事情(只要你沒有將可選的第二個參數設置爲true)。

$hexString = md5($clearText);