调用api的客户端程序,需要在header处发送
API_ID: 1
API_TIME: 时间戳
API_HASH: $clienthash
$user="username";
$publicKey='hello';
$privateKey= hash_hmac('sha256', $user, $publicKey); 需要先把客户端程序的privateKey存入数据库.
$data=json字符串.
$clienthash = hash_hmac('sha256', API_TIME.API_ID.$data, $privateKey);
API端验证:
$serverHash = hash_hmac('sha256', API_TIME.API_ID.$data, $privateKey);//到数据库查找此客户端的privateKey;
如果$clientHash === $serverHash 进入第二层验证
如果服务器时间和API_TIME在设定的时间段内,则验证通过.
第2种方式:
1. 设定一个密钥比如key = ‘2323dsfadfewrasa3434'。 2. 这个key 只有发送方和接收方知道。3. 调用时,发送方,组合各个参数用密钥 key按照一定的规则(各种排序,MD5,ip等)生成一个access_key。一起post提交到API接口。4. 接收方拿到post过来的参数以及这个access_key。也和发送一样,用密钥key 对各个参数进行一样的规则(各种排序,MD5,ip等)也生成一个access_key2。5. 对比access_key 和access_key2 。一样。则允许操作,不一样,报错返回或者加入黑名单。
来自 http://blog.p2hp.com/archives/1815
最后更新于 2017年7月14日