2

我想实现简单的加密。

我正在使用最新的 PHP 7.1.8,由于 mcrypt 已被弃用,我了解了 libsodium。安装它,这就是我的 PHP 信息的样子:

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

在此处输入图像描述

在查看了一些代码之后,我可以看到代码确实使用了这些常量。

我已经看到在\Sodium命名空间中使用了旧版本的 PHP 扩展,并且由于它被确认成为 PHP7.2 核心扩展,因此对函数进行了重构,以用作sodium_*.

也许我遗漏了一些东西,但我的问题是,谁能告诉我我遗漏这些常量的原因是什么?

谢谢!

4

1 回答 1

0

我得到了一个简单的版本规范:

pecl install libsodium-1.0.6

不知道幕后发生了什么,但我的猜测是我的版本paragonie/halite没有完全适应最新的sodiumPHP 扩展。也许这将在即将到来的 PHP7.2 中得到解决,当它成为核心 PHP 扩展时。

现在我坚持使用这个版本。

于 2017-08-05T13:47:00.257 回答