作者:小谢blue | 来源:互联网 | 2024-10-22 11:37
一、遇到问题
java md5的输出结果和php md5的输出结果不一致。
二、解决代码
java
import java.security.MessageDigest;public class md5Test { /** * @param input 输入 * @return 返回16个字节 * @throws Exception */ public static byte[] originMD5(byte[] input) throws Exception { MessageDigest md5 = MessageDigest.getInstance("MD5"); byte[] out = md5.digest(input); return out; } /** * @param input 输入 * @return 返回16个字节 * @throws Exception */ public static byte[] MD5(byte[] input) throws Exception { String str = new String(input, 0, input.length); //创建MD5加密对象 MessageDigest md5 = MessageDigest.getInstance("MD5"); // 进行加密 md5.update(str.getBytes()); //获取加密后的字节数组 byte[] md5Bytes = md5.digest(); String res = ""; for (int i = 0; i
php
$value){ $tempStr .=$key."=".$value."&"; } return substr($tempStr, 0, strlen($tempStr) -1); } public function form2Arr($str){ $arr = array(); $array=explode('&', $str); foreach ($array as $key){ $tempInfo=explode('=', $key); $arr[$tempInfo[0]] = $tempInfo[1]; } return $arr; } /** * 将字节数组转化为String类型的数据 * @param $bytes 字节数组 * @param $str 目标字符串 * @return 一个String类型的数据 */ public function toStr($bytes) { $str = ''; foreach($bytes as $ch) { $str .= chr($ch); } return $str; } /** * 转换一个string字符串为byte数组 * @param $str 需要转换的字符串 * @param $bytes 目标byte数组 */ public function getbytes($str) { $len = strlen($str); $bytes = array(); for($i=0;$i<$len;$i++) { if(ord($str[$i]) >= 128){ $byte = ord($str[$i]) - 256; }else{ $byte = ord($str[$i]); } $bytes[] = $byte ; } return $bytes; }}$test = new testhexstring(); $data = array(0x4C, 0x2B, 0x3E, 0x5A, 0x26, 0x3A, 0x3C, 0x18); $strData = $test->toStr($data); $md5Data = md5($strData); echo 'md5 origin is: ',$md5Data,PHP_EOL;?> 结果: