php 传输数据数字签名设计客户端和服务端

客户端请求 生成一个url,我们去请求这个url,怎么发送请求不做赘述

<?php

$appkey='gdafdasfd';
$appSecret='fdasfdsaf';
$token='fdsafdasfd';
$nonce=getRandom(32);
$ip='17.02.0.26';
$time=time();;
$signature="_ip=$ip&_key=$appkey&_nonce=$nonce&_time=$time&token=$token";
$sig = hash_hmac('sha256', $signature, $appSecret);

function getRandom($param){
    $str="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
    $key = "";
    for($i=0;$i<$param;$i++)
    {
        $key .= $str{mt_rand(0,61)};    //生成php随机数
    }
    return $key;
}


$url="http://127.0.0.1/get.php?_ip=$ip&_key=$appkey&_nonce=$nonce&_sign=$sig&_time=$time&_token=$token";

echo $url;

服务端校验数据

<?php



$appkey=$_GET['_key'];
$appSecret='fdasfdsaf';
$token=$_GET['_token'];
$nonce=$_GET['_nonce'];
$ip='17.02.0.26';
$time=$_GET['_time'];

if(time()-$time>5){
    exit("请求已经超时");
}else{
    $signature="_ip=$ip&_key=$appkey&_nonce=$nonce&_time=$time&token=$token";

    $sig = hash_hmac('sha256', $signature, $appSecret);


    if($sig !==$_GET['_sign']){
        exit("数字签名验证错误");
    }else{
        exit("校验通过");
    }
}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容