我想实现简单的加密。
我正在使用最新的 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
在查看了一些代码之后,我可以看到代码确实使用了这些常量。
我已经看到在\Sodium
命名空间中使用了旧版本的 PHP 扩展,并且由于它被确认成为 PHP7.2 核心扩展,因此对函数进行了重构,以用作sodium_*
.
也许我遗漏了一些东西,但我的问题是,谁能告诉我我遗漏这些常量的原因是什么?
谢谢!