【问题标题】:ENCONDING CHARACTERS problem in php sodium functionsphp钠函数中的编码字符问题
【发布时间】:2019-12-24 01:04:22
【问题描述】:

我现在真的不知道我必须做什么。我尝试安装其他 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 中使用带有 PHP 7.2.11 的 Laragon

【问题讨论】:

    标签: php encoding pear libsodium laragon


    【解决方案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));
    

    【讨论】:

      猜你喜欢
      • 2010-10-23
      • 2019-11-17
      • 1970-01-01
      • 2013-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-04
      相关资源
      最近更新 更多