我在java中有以下方法,并在PHP中查找等效项。
JAVA CODE:
public static String convertToHash(String strToHash)
{
try {
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] md5Hash = null;
md.update(strToHash.getBytes("iso-8859-1"), 0, strToHash.length());
md5Hash = md.digest();
return convertToHex(md5Hash);
} catch (Exception e) {
logger.error("Exception in convertToHash for value : " + strToHash + " : " + e);
}
return strToHash;
}
private static String convertToHex(byte[] data) {
StringBuffer sb = new StringBuffer();
for (byte b : data) {
int halfByte = b >>> 4 & 0xF;
int two_halfs = 0;
do
{
if ((0 <= halfByte) && (halfByte <= 9))
sb.append((char)(50 + halfByte));
else
sb.append((char)(97 + (halfByte - 10)));
halfByte = b & 0xF;
}while (two_halfs++ < 1);
}
return sb.toString();
}
提前感谢您的帮助。
此致 姆兰
答案 0 :(得分:1)
Php具有md5()函数,您可以使用开箱即用的文件字符串在php中存储为二进制文件。 php不支持utf-8所以你对iso格式的好处。
示例md5:
$myStr = "Yo yo my dude";
$hash = md5( $myStr );
样本到十六进制:
$str = "some txt";
$hexStr = bin2hex($str);
样品包()
$str = "my name is jorge";
$hex = pack("H*", $str); // highest nibble first use h* for lowest this is endianness
另见pack()方法
你可以这样做,把它变成你需要的东西。
$str = "hash me up";
$hash = md5($str);
$size = strlen($hash);
$bits = null;
for($i = 0; $i < $size; $i++)
{
$bits .= decbin( ord( $hash[$i] ) );
}
$hex = unpack( "H*", $bits );