Я хочу реализовать простое шифрование.
Я использую новейшую версию PHP 7.1.8, и поскольку mcrypt устарела, я узнал о libsodium. Установил его, и вот как выглядит моя PHP информация:
Кажется, все в порядке.
А затем я установил paragonie / halite v3.2.0 и просто попробовал простой пример со страницы github:
$passwd = new HiddenString('correct horse battery staple');
// Use random_bytes(16); to generate the salt:
$salt = "\xdd\x7b\x1e\x38\x75\x9f\x72\x86\x0a\xe9\xc8\x58\xf6\x16\x0d\x3b";
$encryptionKey = KeyFactory::deriveEncryptionKey($passwd, $salt);
Выполнение этого возвращает:
Fatal error: Uncaught Error: Undefined constant 'Sodium\CRYPTO_PWHASH_OPSLIMIT_INTERACTIVE' in /app/vendor/paragonie/halite/src/KeyFactory.php on line 274
Посмотрев немного на код, я вижу, что код действительно использует эти константы.
Я видел, что старые версии расширения PHP использовались в \Sodium
пространства имен, и поскольку подтверждено, что он стал расширением ядра PHP7.2, функции были реорганизованы для использования в качестве sodium_*
,
Может быть, я что-то упускаю, но мой вопрос, может кто-нибудь сказать мне, в чем может быть причина, по которой я пропускаю эти константы?
Спасибо!
Я получил это работает с простой спецификацией версии:
pecl install libsodium-1.0.6
Не уверен, что происходит под капотом, но я думаю, что моя версия paragonie/halite
не был полностью адаптирован к новейшему sodium
Расширение PHP. Возможно, это будет решено для следующего PHP7.2, когда он станет основным расширением PHP.
Пока я придерживаюсь этой версии.
Других решений пока нет …