荆轲刺秦王
在项目中,我们往往需要传递一些重要数据(通常这些数据都和钱有关),为了防止这些数据被截取篡改,我们经常会为数据加密处理。
我们的思路是:md5((重要信息+随机字符+当前时间)+key(这个key是md5加密后的随机字符串))
具体步骤:
1. $nonestr = '随机获取[1-9a-zA-Z]的24位字符串';
$timeStamp = time(); //获取当前时间
$obj = array(
'nonestr' => $nonestr,
'timestamp' => $timeStamp,
'code' => $code, //你需要传输的重要信息
);
$sign = getSign($obj,$key);
getSign方法的作用:1 . 用foreach将$obj数组的value赋值给新数组的$key
2 . 按字典排序参数
3 . 在上一步的结果后面加上key
4 . 然后md5加密
5 . 再将md5加密后的字符串全部转为大写
与此同时,将以上需要用到的值,传递给模板,再由模板传递给对应的方法。
在对应的方法中,用同样的方法getSign这几个值,然后与传递过来的$sign相比较,如果相同,则说明信息正确,可以进行下一步操作,如果信息不正确,则返回错误信息。