php钠函数中的ENCONDING CHARACTERS问题

问题描述 投票:1回答:1

我现在真的不需要做什么。我尝试安装另一个libsodium的版本,但是模块有问题。希望您能为我提供帮助,因为我不知道我是否正确使用了这些功能...

phpinfo返回了启用libsodium的信息,当我尝试这样的代码时:

var_dump([
    SODIUM_LIBRARY_VERSION,
    SODIUM_LIBRARY_MAJOR_VERSION,
    SODIUM_LIBRARY_MINOR_VERSION
]);

它显示此:

array(3) { [0]=> string(6) "1.0.16" [1]=> int(10) [2]=> int(1) }

但是...如果我尝试这样做:

$kyp = sodium_crypto_kx_keypair();
$pub = sodium_crypto_kx_publickey($kyp);
$pri = sodium_crypto_kx_secretkey($kyp);

print_r($pub);

echo "<br/>";
echo "<br/>";
echo "<br/>";
echo "<br/>";
echo "<br/>";

print_r($pri);

该网页显示:

�����gP�v� �zGG��I34���~%�b




�+��B�;��k{C��G�8��a��8S��`

PS:我在Windows 10中将Laragon与PHP 7.2.11一起使用

php encoding pear libsodium laragon
1个回答
1
投票

您的代码正常工作。您缺少的是钠函数将以二进制格式返回数据。如果要打印密钥数据,则需要将其转换为十六进制,例如(as shown in the documentation):

$keypair = sodium_crypto_kx_keypair();
$secret = sodium_crypto_kx_secretkey($keypair);
$public = sodium_crypto_kx_publickey($keypair);
printf("secret: %s\npublic: %s", bin2hex($secret), bin2hex($public));
© www.soinside.com 2019 - 2024. All rights reserved.