PHP和钠-无法在表单中公开传递nonce

PHP和钠-无法在表单中公开传递nonce,php,encryption,nonce,libsodium,sodium,Php,Encryption,Nonce,Libsodium,Sodium,正如标题所示,我很难通过表单公开传递nonce的值。我尝试在表单中使用隐藏字段,并将值作为参数传递到url中 nonce是使用以下方法创建的: $nonce = random_bytes(SODIUM_CRYPTO_SECRETBOX_NONCEBYTES) 当我尝试从隐藏字段(POST)或url(GET)中使用检索到的值(例如Na钠_crypto_secretbox_open)时,返回以下错误: 未捕获的SodiumException:nonce大小应为Na_CRYPTO_SECRETBOX

正如标题所示,我很难通过表单公开传递nonce的值。我尝试在表单中使用隐藏字段,并将值作为参数传递到url中

nonce是使用以下方法创建的:

$nonce = random_bytes(SODIUM_CRYPTO_SECRETBOX_NONCEBYTES)
当我尝试从隐藏字段(POST)或url(GET)中使用检索到的值(例如Na钠_crypto_secretbox_open)时,返回以下错误:

未捕获的SodiumException:nonce大小应为Na_CRYPTO_SECRETBOX_NONCEBYTES字节

我知道nonce字符串的大小正在受到影响,但我不知道如何解决这个问题

当我回显检索到的nonce时,它看起来很好。在暂时性改变大小并被认为不适合钠使用后,出现了一个问题


任何建议都将是非常感谢的。

在请求中发送的二进制值不能很好地翻译,所以你可以考虑的一件事是使用<代码> BI2HEX < /C>转换原始的NoCurn值,添加为隐藏的输入,然后使用<代码> Hou2Bin < /Calp> < /P>处理过程的反向。
$nonce = random_bytes(SODIUM_CRYPTO_SECRETBOX_NONCEBYTES);
$hex=bin2hex($nonce);
/* add the above $hex as the hidden input */

/* serverside decode the input*/
$bin=hex2bin($hex);


<form method='post'>
    <input type='hidden' name='nonce' value='<?php echo $hex;?>' />
    <!-- other elements -->
    <input type='submit' />
</form>


 /* serverside */   
 $bin=hex2bin( $_POST['nonce'] );
$nonce=随机字节(钠加密加密盒非字节);
$hex=bin2hex($nonce);
/*添加上面的$hex作为隐藏输入*/
/*服务器端解码输入*/
$bin=hex2bin($hex);

在请求中发送二进制值不好,所以你可以考虑的是使用<代码> BI2HEX < /C>转换原始的NoCurn值,添加为隐藏的输入,然后使用<代码> Hou2Bin < /Cult>

处理进程反转。
$nonce = random_bytes(SODIUM_CRYPTO_SECRETBOX_NONCEBYTES);
$hex=bin2hex($nonce);
/* add the above $hex as the hidden input */

/* serverside decode the input*/
$bin=hex2bin($hex);


<form method='post'>
    <input type='hidden' name='nonce' value='<?php echo $hex;?>' />
    <!-- other elements -->
    <input type='submit' />
</form>


 /* serverside */   
 $bin=hex2bin( $_POST['nonce'] );
$nonce=随机字节(钠加密加密盒非字节);
$hex=bin2hex($nonce);
/*添加上面的$hex作为隐藏输入*/
/*服务器端解码输入*/
$bin=hex2bin($hex);

使用钠加密盒非电子字节,而不是钠加密盒非电子字节。

在尝试处理它之前,可能使用钠加密盒非电子字节,而不是钠加密盒非电子字节。

URDECODE
serverside@RamRaider为这个建议干杯,我试过了,但不幸的是没有什么乐趣。
urldecode
可能在尝试处理它之前serverside@RamRaider为这个建议干杯,我试过了,但不幸的是没有什么乐趣。那太好了,它可以通过创建一个可以通过表单传递的可用的nonce来工作。我说的对吗?它确实通过bin2hex->hex2bin改变了原来的nonce。它似乎丢失了空格等…而且,我现在发现自己有另一个问题。如何通过表单传递加密消息(Na钠_crypto_secretbox的输出)。我不能使用上述技术,因为它似乎改变了字符串。我认为它对二进制/原始版本的空白进行了编码。至于第二点:一旦你发布数据,它将被url编码-你在进一步处理之前考虑了吗?我以前从未使用过钠,但只是查看了手册-似乎有钠
这可能很有趣,因为base64编码的字符串可以很容易地在URL或表单值中传递。看起来其他方法可能也很有趣,比如
Na_bin2hex
Na_hex2bin
这最后两种方法可能是为了处理像您现在所处的情况?!我一直在绕圈子,但看起来这些函数正是我想要的。非常感谢您发现这些问题,我将测试并更新您的进度。再次感谢。这太好了,它可以通过创建一个可通过表单传递的可用的nonce来工作。我说的对吗?它确实通过bin2hex->hex2bin改变了原来的nonce。它似乎丢失了空格等…而且,我现在发现自己有另一个问题。如何通过表单传递加密消息(Na钠_crypto_secretbox的输出)。我不能使用上述技术,因为它似乎改变了字符串。我认为它对二进制/原始版本的空白进行了编码。至于第二点:一旦你发布数据,它将被url编码-你在进一步处理之前考虑了吗?我以前从未使用过钠,但只是查看了手册-似乎有钠
这可能很有趣,因为base64编码的字符串可以很容易地在URL或表单值中传递。看起来其他方法可能也很有趣,比如
Na_bin2hex
Na_hex2bin
这最后两种方法可能是为了处理像您现在所处的情况?!我一直在绕圈子,但看起来这些函数正是我想要的。非常感谢您发现这些问题,我将测试并更新您的进度。再次感谢。