如何复制成功的openssl\u验证

如何复制成功的openssl\u验证,ssl,encryption,openssl,public-key-encryption,Ssl,Encryption,Openssl,Public Key Encryption,我的web应用程序有一个从webhook接收帖子的端点,发送有效负载的服务也使用openssl\u-sign对其进行签名 正如您所料,我知道服务的公钥,因此我使用openssl\u验证并检查发送到我的端点的“签名”是否与“有效负载”(有效负载和“签名”是参数名)匹配 一切都很好 我现在要做的是编写端点控制器的功能测试。我想证明,当“有效负载”和“签名”被验证时,与当“有效负载”和“签名”无效时,它能够正确处理 因为我没有服务的私钥,所以我不能为测试用例生成我自己的值 所以我使用日志记录来查看“有

我的web应用程序有一个从webhook接收帖子的端点,发送有效负载的服务也使用
openssl\u-sign
对其进行签名

正如您所料,我知道服务的公钥,因此我使用
openssl\u验证
并检查发送到我的端点的“签名”是否与“有效负载”(有效负载和“签名”是参数名)匹配

一切都很好

我现在要做的是编写端点控制器的功能测试。我想证明,当“有效负载”和“签名”被验证时,与当“有效负载”和“签名”无效时,它能够正确处理

因为我没有服务的私钥,所以我不能为测试用例生成我自己的值

所以我使用日志记录来查看“有效负载”和“签名”的真实值

但是当我在测试中使用这些值时,它失败了

我认为这个问题与换行符或其他可能无法通过Laravel日志100%准确捕获的字符有关

我如何准确地捕获生产“有效负载”和“签名”是什么

另外,我也这样做了:

$payload = $request->input(self::PARAM_PAYLOAD);
Log::debug(sha1($payload));
Log::debug($payload);

然后,当我在日志中查找
$payload
值并在其上运行
sha1
时,散列与原始
$payload
json\u encode
的记录散列不一样,并且
序列化
没有帮助。最终奏效的是:

$payload = $request->input(self::PARAM_PAYLOAD);
Log::debug(encrypt($payload));
无论是因为换行符、单引号、双引号还是其他特殊字符导致的损坏,显然
encrypt
函数使其不再成为问题

因此,我从日志中复制了加密的有效负载值,并将其粘贴到测试中的
const

然后我在运行测试之前解密了有效负载。通过

我仍然不明白问题的根本原因,但至少这个解决方法有所帮助