PHP paragonie / halite - 缺少Sodium \ constants?

时间:2017-08-05 12:34:52

标签: php encryption php-7.1 libsodium

我想实现简单的加密。

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

PHP sodium

一切似乎都井然有序。

然后我安装了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

enter image description here

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

我已经看到PHP扩展的旧版本在\Sodium命名空间中使用,并且因为它被确认为PHP7.2核心扩展,所以函数被重构,以用作{{1} }。

也许我错过了一些东西,但我的问题是,有谁可以告诉我,我错过这些常数的原因是什么?

谢谢!

1 个答案:

答案 0 :(得分:0)

我使用简单的版本规范:

pecl install libsodium-1.0.6

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

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