2013-04-10 2 views
0

md5에 문자열을 인코딩해야합니다. 그런 다음 2 바이트의 chars 16 진수 인코딩을 사용합니다.JAVAs의 PHP와 동일합니다. HexUtils.bytesToHex()

이 짧은 JAJP 스 니펫이있어이를 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로 이것을 달성하는 방법을 잘 모르겠습니다. ENCODING 내가 PHP에서 무엇을 가지고 UTF-8

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

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

하지만 출력이 다른, 그래서 내가 진수 변환에 실패하는 것 같아요.

PHP에 대한이 JAVA 스 니펫의 적절한 포트는 무엇입니까?

답변

2

md5의 출력은 이미 16 진수로 인코딩 된 문자열이므로 다른 옵션은 두 번째 매개 변수 (true)로 설정하지 않아도됩니다.

$hexString = md5($clearText);