php接口开发数据签名程序代码(php接口开发数据签名程序代码是什么)

本文目录一览:

php中如何调用接口以及编写接口代码详解

可以用curl获取借楼的信息。

所谓接口,就是提供一个url,只要你满足它要求的参数,就能得到你要的数据。比如你拿到一个接口,带上所需的参数,复制到地址栏同样能得到。不过最好用程序得到。file_get_contents也可以用,不过有局限性。所以我建议用curl。给你一个函数,挺好用的。

function request($url,$https=true,$method=’GET’,$data=null){

$ch = curl_init();//初始化,得到资源

curl_setopt($ch, CURLOPT_URL,$url); //请求数据的路径

curl_setopt($ch, CURLOPT_HEADER,false);//是否输出头

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //不直接输出结果

//curl_setopt ($ch, CURLOPT_SAFE_UPLOAD, 0);//兼容php之后的版本

if($https){

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); //是否验证主机

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); //是否进行证书验证

}

if($method==’POST’){

curl_setopt($ch, CURLOPT_POST, true); //POST传输

curl_setopt($ch, CURLOPT_POSTFIELDS, $data); //传输数据

}

$content_json = curl_exec($ch);

if ($content_json === false) {

return “网络请求出错: ” . curl_error($ch);

}

curl_close($ch);

return $content_json;

}

用PHP如何实现数字签名啊··跪求高人指点···

以下是资料:

php中数字签名与校验

1. 先用php生成一对公钥和私钥

$res = openssl_pkey_new();

openssl_pkey_export($res,$pri);

$d= openssl_pkey_get_details($res);

$pub = $d[‘key’];

var_dump($pri,$pub);

输出依次为私钥和公钥的pem字串,如:

string(916) “—–BEGIN PRIVATE KEY—–

MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAKs124okAnX5jh1Q

wsETi80b4ZyYlYUSsAtvS7ZG+GSLAox24TKNwWIy5cUdKfK/5QEJjZ0S8LjRSYCG

to9LkwQTQrKY8BBXVCQQS3VXRqz4on9bmcGSyLMK6vQxt9NnJpk6aBmJE7z35+8z

TTLwdUbYaMAcYqrsYDfgBSNBgwbDAgMBAAECgYBvolJfpFMmcW3El6AlHIWPW5qj

7KmxdxnqmssXMvdLN4iV5f24ZM2vJdjDydxMN+st3fjEblEfcPcoIq5uiKx2bnO3

f9g0yt+qUoXdz4LK6jV1NfuAZDcnBm7CXfE7BDREgyiRg4ZXIvp4L0Y2zBMdFTmg

LKkXb2M1P3pK53UbwQJBANupqPXFQjdHvAa3voT+UI8OhmLbw/Vyh6Ii1glwMfyq

VS2lAakj9d1hqLYZvw+eNeZBnzZNPuMJg5aj/WKUqasCQQDHiFLS7Yb1rbhfjmRt

ZL4zXuvX1hVjTNo2TeZwPniGpYa+QHcauDDep5C9q//n+D+ZtkbkECxpOVhrUHSI

KO9JAkEApl3lHd98uymVevEHVurWUMMLfSw9SlSn7WC9AwD6mwbW5G8oxtX5jOY+

RU1Sq52D7RSeZR40FvhJtXoWmudFaQJAc8E+a2epF/YENEtjL6N2RE8Y+0oTdlwr

a72dphhXy6VTmiPD9RhOIZ2MdrzF5Uk7fG0mi0Bmw1SlWvx93lABIQJBALXPeoNa

b4dQkRkfqCHtyrWOeRcC1Y6FyTfNj+cRBzdIcmFc21hxj6HKy2M6/XGI3rAE5L+B

mmlSmN1enhoCUqc=

—–END PRIVATE KEY—–

string(272) “—–BEGIN PUBLIC KEY—–

MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCrNduKJAJ1+Y4dUMLBE4vNG+Gc

mJWFErALb0u2RvhkiwKMduEyjcFiMuXFHSnyv+UBCY2dEvC40UmAhraPS5MEE0Ky

mPAQV1QkEEt1V0as+KJ/W5nBksizCur0MbfTZyaZOmgZiRO89+fvM00y8HVG2GjA

HGKq7GA34AUjQYMGwwIDAQAB

—–END PUBLIC KEY—–

2. 保存好自己的私钥,把公钥可以公开给别人。如果需要对某数据进行签名,证明那数据是从你这里发出的,就需要用私钥:

$res = openssl_pkey_get_private($pri);

if (openssl_sign(‘hello’, $out, $res))

var_dump(base64_encode($out));

上例中 $pri 为自己的私钥,’hello’ 为待签名的数据,如果签名成功,最后输出为base64编码后的签名,如:

j19H+C/NQEcyowezOQ+gmGi2UoPJNXyJ+KwpkEzJ5u4qaRD3cY4qhfFfIosypypwJTJ4LjRYOIPNQMQm6ICj2nMdGfn/p/pp7il+xGz2aUWdOXkJFgIc/PGC95C9sLH04Tc6QSuV5IMd9rjBjyv+ieokMLFm9cmtN2hGag9vq1s=

3. 别人收到你的数据 ‘hello’ 和签名字串,想验证这是从你发来的数据的话,用你公开的公钥验证:

$sig = base64_decode($sig);

$res = openssl_pkey_get_public($pubkey);

if (openssl_verify(‘hello’, $sig, $res) === 1)

; // 通过验证

上例中刚开始的 $sig 为之前你base64编码过的签名, $pubkey 为你的公钥

php中这种签名使用的是RSA算法;数字签名可以在 单点登录 等系统中派上用场。

php如何做数字签名?

概括就是:“学会用PHP的openssl扩展!!”

1、先用openssl_pkey_new()函数产生一个私钥pri_key,

2、用openssl_csr_new()函数以私钥pri_key 产生一个信用证csr

3、用openssl_sign()函数以私钥pri_key对一段数据data产生一个数字签名signature。

4、用openssl_pkey_get_public()函数从信用证csr中获得公钥pub_key

5、把公钥pub_key、数字签名signature、数据data发给对方。

6、对方收到3项后,用openssl_verify()函数或其他验证工具,验证签名。

7、对方验证有效,开始使用你的信息data。验证无效,再找你扯皮。

整个过程的双方可以互换,即可让对方出具三项,你来验证。

php 请求接口数据方法,调用传参数,求代码

/**

 * 公用方法 post

 * @param $url 链接

 * @param $data 数据

 * @param $api api 执行操作参数 add update del

 * @return $result

 */

function sendHttpPost($url, $data = [], $api = ‘list’)

{

   $url = C(‘URL_API’) . $url;

   $param = [

      ‘ver’  = C(‘API_VER’),

      ‘api’  = $api,

      ‘date’ = time(),

      ‘DATA’ = $data

   ];

   $data = json_encode($param);

   print_r($data);

   $ch = curl_init();

   curl_setopt($ch, CURLOPT_URL, $url);

   curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

   curl_setopt($ch, CURLOPT_POST, 1);

   curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

   $result = curl_exec($ch);

   curl_close($ch);

//    var_dump($data);

   return $result;

}

PHP—APP接口02

JSONXML

XML: 是一种标记语言,设计的宗旨是传输数据

JSON: 轻量级的数据交换格式

APP接口主要是用JSON输出格式

APP接口输出格式三要素:

1. code::错误码

2. msg:错误码对应的描述

3. data:接口返回的数据

谁有权限调用APP接口,客户端需要带着凭证来调用APP接口

JWT的原理:

服务端认证之后,生成一个JSON对象,返回给用户。后续客户端所有请求都会带上这个JSON对象。服务端依靠这个JSON对象来认定用户身份。

组成: Header, Payload, Signature

1. Header

说一下我是什么

header通常包含了两部分:类型和加密算法

{

    “alg”: “HS256”,

    “typ”: “JWT”

}

header需要经过Base64Url编码后作为IWT的第一部分。

2. Payload

payload包含了claim, 三种类型reserved, public, private

reserved这些claim是JWT预先定义的,不强制使用,常用的有:

1). iss: 签发者

2). exp: 过期的时间戳

3). sub: 面向的用户

4). aud: 接收方

5). iat: 签发时间

{

    “sub”:  “1234567890”,

    “name”:  “John Doe”,

    “admin”: true

}

payload需要经过Base64Url编码后作为JWT的第二部分。

3. Signature

创建签名使用编码后的header和payload以及一个密匙,使用header中指定的签名算法进行签名

HMACSHA256(

base64UrlEncode(header) + “.” +

base64UrlEncode(payload),

secret

)

签名是在服务端进行的,客户端并不知道,所以是安全的。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/310141.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2025-01-04 19:32
下一篇 2025-01-04 19:32

相关推荐

  • PHP和Python哪个好找工作?

    PHP和Python都是非常流行的编程语言,它们被广泛应用于不同领域的开发中。但是,在考虑择业方向的时候,很多人都会有一个问题:PHP和Python哪个好找工作?这篇文章将从多个方…

    编程 2025-04-29
  • Python读取CSV数据画散点图

    本文将从以下方面详细阐述Python读取CSV文件并画出散点图的方法: 一、CSV文件介绍 CSV(Comma-Separated Values)即逗号分隔值,是一种存储表格数据的…

    编程 2025-04-29
  • Python中读入csv文件数据的方法用法介绍

    csv是一种常见的数据格式,通常用于存储小型数据集。Python作为一种广泛流行的编程语言,内置了许多操作csv文件的库。本文将从多个方面详细介绍Python读入csv文件的方法。…

    编程 2025-04-29
  • 如何用Python统计列表中各数据的方差和标准差

    本文将从多个方面阐述如何使用Python统计列表中各数据的方差和标准差, 并给出详细的代码示例。 一、什么是方差和标准差 方差是衡量数据变异程度的统计指标,它是每个数据值和该数据值…

    编程 2025-04-29
  • Python多线程读取数据

    本文将详细介绍多线程读取数据在Python中的实现方法以及相关知识点。 一、线程和多线程 线程是操作系统调度的最小单位。单线程程序只有一个线程,按照程序从上到下的顺序逐行执行。而多…

    编程 2025-04-29
  • Python两张表数据匹配

    本篇文章将详细阐述如何使用Python将两张表格中的数据匹配。以下是具体的解决方法。 一、数据匹配的概念 在生活和工作中,我们常常需要对多组数据进行比对和匹配。在数据量较小的情况下…

    编程 2025-04-29
  • Python爬取公交数据

    本文将从以下几个方面详细阐述python爬取公交数据的方法: 一、准备工作 1、安装相关库 import requests from bs4 import BeautifulSou…

    编程 2025-04-29
  • Python数据标准差标准化

    本文将为大家详细讲述Python中的数据标准差标准化,以及涉及到的相关知识。 一、什么是数据标准差标准化 数据标准差标准化是数据处理中的一种方法,通过对数据进行标准差标准化可以将不…

    编程 2025-04-29
  • 如何使用Python读取CSV数据

    在数据分析、数据挖掘和机器学习等领域,CSV文件是一种非常常见的文件格式。Python作为一种广泛使用的编程语言,也提供了方便易用的CSV读取库。本文将介绍如何使用Python读取…

    编程 2025-04-29
  • Python如何打乱数据集

    本文将从多个方面详细阐述Python打乱数据集的方法。 一、shuffle函数原理 shuffle函数是Python中的一个内置函数,主要作用是将一个可迭代对象的元素随机排序。 在…

    编程 2025-04-29

发表回复

登录后才能评论