PHP开发API接口签名生成及验证操作示例

yizhihongxing

PHP开发API接口签名生成及验证操作示例

API接口签名是一种通过对 API 请求参数进行签名来确保 API 请求合法性的技术。在 API 请求参数中添加签名并发送至服务端后,服务端可以验证此签名是否合法。

什么是API接口签名

API接口签名是对请求数据进行MD5或SHA1加密的过程,并将加密结果作为请求参数之一提交到服务器端,服务器端对请求的签名进行验证以判定请求的合法性。

如何生成和验证API接口签名

生成API接口签名

在请求API接口时,需要往请求参数中添加签名,以下为签名生成的步骤:

  1. 将请求参数按照ASCII码值排序;
  2. 将排序后的参数名和参数值拼接成一个字符串(key1=value1&key2=value2...);
  3. 在字符串末尾添加上API密钥;
  4. 对拼接好的字符串进行MD5或SHA1加密。

以下为示例:

<?php
function createApiSign($params, $secretKey) {
    //按参数名排序
    ksort($params);
    //格式化参数成key=value形式拼接
    $str = '';
    foreach ($params as $key => $value) {
        $str .= $key . '=' . $value . '&';
    }
    //去掉末尾的&
    $str = rtrim($str, '&');
    //拼接API密钥
    $str .= $secretKey;
    //MD5加密
    return md5($str);
}
?>

验证API接口签名

在接收到API请求时,需要对请求参数中的签名进行验证。以下为验证签名的步骤:

  1. 将请求参数按照ASCII码值排序;
  2. 将排序后的参数名和参数值拼接成一个字符串(key1=value1&key2=value2...);
  3. 在字符串末尾添加上API密钥;
  4. 对拼接好的字符串进行MD5或SHA1加密;
  5. 将加密结果与请求参数中的签名参数进行比较。

以下为示例:

<?php
function verifyApiSign($params, $secretKey, $apiSign) {
    //按参数名排序
    ksort($params);
    //格式化参数成key=value形式拼接
    $str = '';
    foreach ($params as $key => $value) {
        $str .= $key . '=' . $value . '&';
    }
    //去掉末尾的&
    $str = rtrim($str, '&');
    //拼接API密钥
    $str .= $secretKey;
    //MD5加密
    $sign = md5($str);
    //比较签名
    return $sign == $apiSign;
}
?>

示例说明

假设有一个API接口,需要传递两个参数:nameage,API密钥为123456。以下为示例:

生成签名

请求参数为:

name=张三&age=20

代码示例:

<?php
$params = [
    'name' => '张三',
    'age' => '20',
];
$secretKey = '123456';

$apiSign = createApiSign($params, $secretKey);
?>

生成的签名为:

bb10ee4feaca3ce6198f1c29c3c3d6e2

验证签名

请求参数为:

name=张三&age=20&sign=bb10ee4feaca3ce6198f1c29c3c3d6e2

代码示例:

<?php
$params = [
    'name' => '张三',
    'age' => '20',
    'sign' => 'bb10ee4feaca3ce6198f1c29c3c3d6e2',
];
$secretKey = '123456';

$isVerify = verifyApiSign($params, $secretKey, $params['sign']);
?>

验证结果为:

true(验证通过)

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PHP开发API接口签名生成及验证操作示例 - Python技术站

(0)
上一篇 2023年5月26日
下一篇 2023年5月26日

相关文章

  • php实现递归抓取网页类实例

    下面是我对于“php实现递归抓取网页类实例”的完整攻略。 确定需要爬取页面的URL 在开始抓取页面之前,首先需要确定需要爬取的网页地址。一种常见的方式是使用一个数组来存储这些地址,例如: $url_list = array( ‘https://example.com/page1’, ‘https://example.com/page2’, ‘https://…

    PHP 2023年5月27日
    00
  • PHP网站备份程序代码分享

    PHP网站备份程序代码分享 一、介绍 网站备份是网站管理中必不可少的一环,这不仅可以避免网站的数据丢失,也能够在网站遭遇入侵、攻击等情况时,进行快速恢复。本文将介绍如何使用PHP编写一个简单的网站备份程序,实现自动备份网站的核心数据,并存储至指定的位置。 二、编写步骤 1.建立文件夹和文件 我们先在主目录下新建一个文件夹,命名为backup,用来存储我们备份…

    PHP 2023年5月23日
    00
  • 微信微软小冰FM小程序在哪 微信微软小冰FM小程序功能介绍

    微信微软小冰FM小程序在哪 微信微软小冰FM小程序是微软小冰和微信联手推出的一款音乐播放器小程序,能够为用户提供高品质的音乐播放服务。该小程序可以在微信内搜索并进入使用,也可以在微软小冰的官方网站上进行下载安装。 在微信内搜索: 打开微信,点击底部的“发现”选项 搜索栏输入“微信微软小冰FM” 进入小程序并开始使用 在微软小冰官网下载安装: 打开微软小冰官网…

    PHP 2023年5月23日
    00
  • PHPCMS v9 安全设置、防范教程

    PHPCMS v9 安全设置、防范教程 在使用PHPCMS v9建站的时候,要注意安全问题。本文将介绍一些常见的安全设置和防范措施,以确保您的网站不会受到攻击。 1. 使用强密码 在PHPCMS v9后台登录时,建议使用复杂的密码,包含大小写字母、数字和符号。这样可以有效地防止被猜测或撞库攻击。 示例说明: 以下是一个例子,展示了一个很容易被攻击的密码: A…

    PHP 2023年5月24日
    00
  • 微信小程序什么时候对外开放 小程序上线时间公布及功能介绍

    微信小程序开放时间及功能介绍 微信小程序,简称小程序,是一种全新的开发平台,可以在微信中运行的应用程序。小程序有轻便、快速等特性,又能方便地获取微信的社交功能,成为了开发者关注的热点。 开放时间 微信小程序最初推出于2016年9月,但是一直处于内测阶段。直到2017年1月,微信宣布小程序将于2017年1月下旬正式上线,随后在2017年1月9日正式开放申请。目…

    PHP 2023年5月23日
    00
  • 简单解析PHP程序的运行流程

    下面我将详细讲解“简单解析PHP程序的运行流程”的完整攻略。 PHP程序的运行流程 PHP程序的运行流程可以简单概括为以下四个步骤: Web服务器接收客户端的HTTP请求。 PHP解释器读取请求中的PHP脚本,并将其翻译为可执行的指令。 PHP解释器执行脚本,并将结果返回给Web服务器。 Web服务器将PHP程序的结果发送给客户端,完成响应过程。 下面我们来…

    PHP 2023年5月23日
    00
  • 如何使用美图看看实现图片批量处理的问题

    使用美图看看实现图片批量处理的步骤如下: 步骤一:下载并安装美图看看应用 首先需要在手机应用商店中搜索“美图看看”,然后下载并安装该应用。 步骤二:进入美图看看“图片处理”模块 打开美图看看应用后,点击底部导航栏中的“图片处理”按钮,进入图片处理模块。 步骤三:选择要处理的图片 在图片处理模块中,点击“相册”按钮或者“拍照”按钮选择要处理的图片。如果需要批量…

    PHP 2023年5月27日
    00
  • PHP解决输出中文乱码问题讲解

    当使用PHP输出中文内容时,可能会遇到中文乱码的问题。下面,我将详细讲解如何使用PHP解决输出中文乱码问题的方法。 方式1:在html的head头部添加charset字符集声明 HTML文件中应该在标记中添加 meta charset 声明并指定正确的字符集,这个字符集必须与PHP文件本身的字符集编码一致。通常UTF-8是一个更好的选择,因为它支持更多的字符…

    PHP 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部