2017-08-05 5 views
2

私は単純な暗号化を実装したいと思います。PHPのparagonie/halite - ナトリウム定数がない?

私は最新のPHP 7.1.8を使用しています.mcryptは廃止されて以来、libsodiumについて学びました。それをインストールし、そしてこれは私のPHP情報がどのように見えるかです:

PHP sodium

すべてが順序であるように思われます。

そして私はparagonie /岩塩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コア拡張になることが確認されてから、関数がリファクタリングされてsodium_*として使用されることを確認しました。

多分私は何かが不足していますが、私の質問は、私はこれらの定数が不足している理由が何であるか教えてもらえますか?

ありがとうございます!

+1

ええ、それは変です。私はソースをチェックし、定数は実際に[Sodium.stub.php]で定義されています(https://github.com/paragonie/halite/blob/49a324b4c83e52cd8dcf887a9bd71dc832488d22/stub/Sodium.stub.php#L33)いずれにせよ、私はこの[回答](https://stackoverflow.com/questions/37682227/including-paragonie-halite-in-project-doesnt-find-variables-and-functions)に示すように、libsodiumの最新バージョンをインストールする必要があると思います。 @Scott Arciszewskiは、答えがあなたの問題を解決しない場合、あなたは彼にpingすることができますプロジェクトのメンテナーです – samayo

+0

非常にありがとうございます@サマヨ、私は再びバージョンを確認し、助けがあればお知らせします:) – Adrian

+0

私の拡張には利用可能な 'sodium_ *'関数がありますが、これらの定数は使用できないのは不思議です。標準の 'pecl install libsodium'を使って拡張機能をインストールしました。特定のバージョンを選択しようとします。 – Adrian

答えて

0

私はそれは、単純なバージョンの仕様で作業しました:

pecl install libsodium-1.0.6

ないフードの下で何が起こっているかを確認しますが、私の推測ではparagonie/haliteの私のバージョンが完全に最新のsodiumに適応されていなかったということですPHP拡張モジュール。おそらくこれはPHP7のコアとなるPHP7.2に向けて解決されるでしょう。

今のところ私はこのバージョンに固執しています。

関連する問題