我有一个PHP (网关)服务器。客户端是node.js服务器。它们之间交换的THe数据被加密(crypto_secretbox)和解密(crypto_secretbox_open),分别使用libsodium实现PHP。
PHP中的加密数据在开始时没有16字节的零(salt),因为node.js中的加密数据有16字节零。
要对用PHP加密的数据的节点进行解密,在调用secretBox.decrypt之前,我必须先加16字节的零(salt)。
要在PHP上解密节点中加密的数据,在调用\Sodium\crypto_secretbox_open之前,我必须先删除16字节的零。
问题是:这是最好的办法吗?还是我遗漏了一些很明显的东西?
发布于 2016-03-10 08:29:51
您实际使用的是secretbox_easy和Node- and,而不是secretbox
secretbox需要额外的字节来进行预处理/剥离。它只提供向后兼容性,除了在C中使用它没有任何意义,但出于某种原因,Node-‘t提供了它。
PHP绑定不需要这些额外的字节。与大多数其他绑定一样,secretbox实际上是幕后的secretbox_easy。
好消息是Node- is也提供secretbox_easy.您只需要显式地将它命名为secretbox_easy。不再需要填充物。
https://stackoverflow.com/questions/35833616
复制相似问题