gpt4 book ai didi

ssl - 如何重现成功的 openssl_verify

转载 作者:太空宇宙 更新时间:2023-11-03 14:24:54 26 4
gpt4 key购买 nike

我的 Web 应用程序有一个端点,它从 Webhook 接收 POST,发送负载的服务也使用 openssl_sign 对其进行签名.

如您所料,我知道服务的公钥,所以我使用 openssl_verify并检查发送到我端点的“签名”是否与“有效负载”匹配(“有效负载”和“签名”是参数名称)。

一切正常

我现在要做的是编写端点 Controller 的功能测试。我想证明它在验证“有效负载”和“签名”以及“有效负载”和“签名”无效时都能正确处理。

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

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

但是当我使用这些值进行测试时,它失败了!

我认为问题与换行符或 Laravel 日志记录可能无法 100% 准确捕获的任何内容有关。

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

附言我也这样做了:

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

然后当我在日志中查找 $payload 时值并运行 sha1在它上面,散列与原始 $payload 的记录散列不同。 .

最佳答案

json_encode 没有帮助,serialize 也没有帮助。最终起作用的是:

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

是否由于换行符、单引号、双引号或其他特殊字符而发生损坏,显然 encrypt 函数使它不是问题。

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

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

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

关于ssl - 如何重现成功的 openssl_verify,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58071393/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com