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

时间:2016-03-06 22:50:36

标签: php node.js libsodium

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

PHP中的加密数据开头没有16字节的零(salt),因为node.js中的加密数据有16个字节的零。

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

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

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

1 个答案:

答案 0 :(得分:0)

您实际使用的是if(s.charAt(i)!==s.charAt(i).toLowerCase()){ //-^ -----------^ 与Node-Sodium,而不是secretbox_easy吗?

secretbox需要预先添加/去除额外的字节。它仅用于向后兼容,除了在C中使用它之外没有任何意义,但出于某种原因,Node-Sodium提供它。

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

好消息是Node-Sodium还提供secretbox_easy。您只需要明确地将其命名为secretbox_easy。不再需要填充。