签名解决了什么问题? 数据在网络中传输,可能因为各种原因(HTTP明文传输,网络异常等)导致数据损坏,接收端收到的数据出现问题,为了保证信息完整性,使用签名技术。
HTTP接口通信中常用的两种签名方式(本文介绍key签名方式)
key签名非对称加密签名(公钥私钥)即如何计算签名,比如使用md5或sha1将待签名数据与key一起计算hash值,然后将数据与签名一起发送出去。
$data = 'hello world'; //待签名数据 $key = 'xxxxx'; // 参与计算的key $sign = sha1($data.$key); //生成签名 //使用get 或 post将数据与签名一起发送 $url = "http://xxx.com/xxx?data={$data}&sign={$sign}"; //get发送当然,规则视具体情况而定,只要发送端发与接收端协商好即可。
接收端收到数据后,使用与生成签名相同的规则计算出签名,然后与接收到的签名比较,如果一致则验签通过,否则验签失败。
$key = 'xxxxx'; //与发送端一样的key $data = $_GET['data']; //接收到的数据 $sign = $_GET['sign']; // 接收到的签名 $local_sign = sha1($data.$key); //验签算法 与 发送端的生成签名算法保持一致 if($sign == $local_sign) { echo "验签通过"; }else{ echo "验签失败"; }视频参考