Я пытаюсь использовать Libsodium впервые для шифрования, но я столкнулся с ошибкой! Я запускаю все на XAMPP, а натрий находится в папке / ext /, и я добавил extension=sodium
в php.ini
Это мой код:
<?php
// This refers to the previous code block.
require "safeCrypto.php";
// Do this once then store it somehow:
$key = random_bytes(SODIUM_CRYPTO_SECRETBOX_KEYBYTES);
$message = 'We are all living in a yellow submarine';
$ciphertext = safeEncrypt($message, $key);
$plaintext = safeDecrypt($ciphertext, $key);
echo $ciphertext;
echo $plaintext;
echo phpversion();
Выдает эту ошибку:
<br />
<b>Warning</b>: Use of undefined constant SODIUM_CRYPTO_SECRETBOX_KEYBYTES - assumed 'SODIUM_CRYPTO_SECRETBOX_KEYBYTES' (this will throw an Error in a future version of PHP) in <b>D:\xampp\htdocs\php\crypttest.php</b> on line <b>6</b><br />
<br />
<b>Fatal error</b>: Uncaught TypeError: random_bytes() expects parameter 1 to be integer, string given in D:\xampp\htdocs\php\crypttest.php:6
Я использую PHP 7.2.10
UPDATE
Ран get_loaded_extensions и натрий НЕ установлены, и я не могу понять, почему. php_sodium.dll
существует в папке ext, и я добавил extension=sodium
в php.ini, среди других расширений, которые загружаются правильно.