gpt4 book ai didi

php - PHP 和 Node.js 之间的 libsodium 实现差异

转载 作者:太空宇宙 更新时间:2023-11-04 02:15:45 25 4
gpt4 key购买 nike

我有一个 PHP REST(网关)服务器。客户端是一个node.js 服务器。它们之间交换的数据分别使用 PHP 和 Node 的 libsodium easy api 实现进行加密 (crypto_secretbox) 和解密 (crypto_secretbox_open)。

PHP 中的加密数据开头没有 16 字节零(盐),而 Node.js 中的加密数据有 16 字节零。

要在 PHP 加密数据的 Node 上进行解密,我必须在调用 SecretBox.decrypt 之前添加 16 个字节的零(盐)。

要在 PHP 上解密 Node 中加密的数据,我必须先删除 16 个字节的零,然后再调用\Sodium\crypto_secretbox_open。

问题:这是最好的方法还是我遗漏了一些非常明显的东西?

最佳答案

您实际上是否将 secretbox_easy 与 Node-Sodium 一起使用,而不是 secretbox

secretbox 需要添加/删除额外的字节。它仅用于向后兼容,在除了 C 之外的情况下使用它并没有真正的意义,但出于某种原因,Node-Sodium 提供了它。

PHP 绑定(bind)不需要这些额外的字节。与大多数其他绑定(bind)一样,secretbox 实际上是 secretbox_easy 的底层。

好消息是 Node-Sodium 还提供了 secretbox_easy。您只需明确调用它 secretbox_easy 即可。不再需要填充。

关于php - PHP 和 Node.js 之间的 libsodium 实现差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35833616/

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