一、获取毫秒时间戳
list($msec, $sec) = explode(' ', microtime());
$time = (float)sprintf('%.0f', (floatval($msec) + floatval($sec)) * 1000);
之前有使用过
$time = explode ( " ", microtime () );
$time = $time[1] . ($time[0] * 1000);
$time2 = explode( ".", $time );
$time = $time2[0];
但是此方法在首位是0的时候最后的结果会缺少一位,导致时间比较失败
二、待签名数据以UTF-8的格式转字节流
与java对接时,java有使用方法getBytesUtf8(data)和encryptionByteByMD5(data)两种方法
getBytesUtf8(data)可以直接调用如下函数即可
private function getByteUtf8($data)
{
// 待签名数据以UTF-8的格式转字节流
$bytes = unpack("c*", $data);
//$bytes为一个字节流数组,需要将其转为字符串
$str = '';
foreach ($bytes as $ch) {
$str .= chr($ch);
}
return $str;
}
encryptionByteByMD5(data)方法需要如下调用
getByteUtf8(md5($data,true))
本文记录了在PHP中遇到的两个问题:一是如何正确获取毫秒时间戳,尤其处理首位为0的情况;二是如何将待签名的UTF-8数据转换为字节流,以与Java的getBytesUtf8()和encryptionByteByMD5()方法进行对接。提供了相应的解决方法。
3516

被折叠的 条评论
为什么被折叠?



