RT,最近一个客户购买了移动的短信发送接口,本人负责对接,接口的请求大概是这样的,首先通过一个地址请求得到类似微信授权的 expire=7200s 的 access_token,然后使用这个 token 经过跟其他参数按照一定顺序拼接后得到的字符串进行 md5+hex 加密,短信发送请求需要用到加密之后得到的 mac,但是不知道如何用 php 写这个 mac 的算法
DEMO 中 JAVA 代码的 mac 算法部分:
	// MD5 转换
	public static String encryptToMD5(String password) {
		byte[] digesta = null;
		String result = null;
		try {
			// 得到一个 MD5 的消息摘要
			MessageDigest mdi = MessageDigest.getInstance("MD5");
			// 添加要进行计算摘要的信息
			mdi.update(password.getBytes("utf-8"));
			// 得到该摘要
			digesta = mdi.digest();
			result = byteToHex(digesta);
		} catch (NoSuchAlgorithmException e) {
		} catch (UnsupportedEncodingException e) {
			// TODO 自动生成??catch ??
			e.printStackTrace();
		}
		return result;
	}
	/**
	 * 将二进制转化为 16 进制字符串
	 */
	public static String byteToHex(byte[] pwd) {
		StringBuilder hs = new StringBuilder("");
		String temp = "";
		for (int i = 0; i < pwd.length; i++) {
			temp = Integer.toHexString(pwd[i] & 0XFF);
			if (temp.length() == 1) {
				hs.append("0").append(temp);
			} else {
				hs.append(temp);
			}
		}
		return hs.toString().toUpperCase();
	}
其他:java 的 demo 中获取 mac 的值就是通过
String selfMac = encryptToMD5(mac);,我这边就是需要重写以上两个函数
大家有没有什么建议?比如去看 JAVA 语法,或者以上函数可以比较简单的通过 php 重写?主要是看不懂一个字符串传入 encryptToMD5 这个函数之后经过了什么处理,特别是第二个函数看不明白
|      1alinwu05      2017-12-07 09:36:13 +08:00 md5 是 PHP 内置的函数 | 
|  |      2dwyyy      2017-12-07 09:46:06 +08:00 [bin2hex]( https://secure.php.net/manual/zh/function.bin2hex.php) [md5]( https://secure.php.net/manual/zh/function.md5.php) 参考以上两个函数的说明 |