Php 与API签名公钥和私钥对混淆

Php 与API签名公钥和私钥对混淆,php,encryption,ssl,Php,Encryption,Ssl,我已经创建了一个API,需要通过签名请求进行授权 我正在使用php openssl签名和openssl验证函数。 我理解公钥和私钥(DSA算法)的概念。但基本上我不知道如何实施它 我是从这个例子开始工作的 将密钥与要签名的HTTP get请求一起传输似乎不是一个好主意 最好将公钥存储在服务器端(例如,在客户端数据库中),并从随请求发送的某个标识符(例如用户名)中查找它 您的请求URL如下所示: rtp://api.example.com/username=User1&method=XML

我已经创建了一个API,需要通过签名请求进行授权

我正在使用php openssl签名和openssl验证函数。
我理解公钥和私钥(DSA算法)的概念。但基本上我不知道如何实施它

我是从这个例子开始工作的


将密钥与要签名的HTTP get请求一起传输似乎不是一个好主意

最好将公钥存储在服务器端(例如,在客户端数据库中),并从随请求发送的某个标识符(例如用户名)中查找它

您的请求URL如下所示:

rtp://api.example.com/username=User1&method=XML&product=shoes&size=5&sex=male&signature=x1cvGgtRfJs4FgG
客户端将使用私钥(以及任何DSA实现)对请求URL的重要部分进行签名


(私钥根本不应该被传输。)

基本上,这里有三种加密方式:

  • 生成公钥和私钥对
  • 使用私钥1和公钥加密数据
  • 使用公钥和私钥2解密数据
  • 步骤1只发生一次,您可以为两个客户端(或服务器和客户端)生成公钥(或密钥[RSA])和私钥

    在发送数据之前,您需要使用私钥(只有您知道)和公钥(两者都知道)对数据进行签名,这将创建一个cypertext(或称为摘要),您可以将其发送给对方(其他客户端或服务器)。另一方面,他们用公钥解密cypertext,然后用私钥检索实际数据

    这实际上是使用公钥和私钥进行加密解密的基础


    这些加密和解密的各种版本都可用,使用维基百科会很有帮助。

    维基百科的解释可能有点过于复杂,有时你只需要理解这个概念。谢谢
    rtp://api.example.com/username=User1&method=XML&product=shoes&size=5&sex=male&signature=x1cvGgtRfJs4FgG