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 这个函数之后经过了什么处理,特别是第二个函数看不明白
1
alinwu05 2017-12-07 09:36:13 +08:00
md5 是 PHP 内置的函数
|
2
dwyyy 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) 参考以上两个函数的说明 |