求助,如何把以下 Java 代码用 PHP 重写

2017-12-07 09:32:22 +08:00
 lestat

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 这个函数之后经过了什么处理,特别是第二个函数看不明白


非常感谢!

1486 次点击
所在节点    问与答
3 条回复
alinwu05
2017-12-07 09:36:13 +08:00
md5 是 PHP 内置的函数
dwyyy
2017-12-07 09:46:06 +08:00
lestat
2017-12-07 09:47:38 +08:00
@dwyyy 我看看,谢谢

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/412665

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX