2017-07-29 6 views
0

私は双方向暗号のための解読ライブラリを試してみたいと思っています。私は、InstallAndVerify.mdの指示に従い、ディフューズディレクトリとサブディレクトリをWebルートディレクトリにコピーし、.pharファイルを/var/www/lib/defuse-crypto.pharにコピーしました。私のテストスクリプトに私が含まれている不確定メソッドへの呼び出しを避けるために、どこでデフュースライブラリを配置しますか?

require_once('/var/www/lib/defuse-crypto.phar'); 

私は次のエラーが発生します。私はまた、より完全なパスなし、

$key = Crypto::CreateNewRandomKey(); 

等を用いて試みた、私は

use Defuse\Crypto\Crypto; 
を試みた例スクリプト

$key = \Defuse\Crypto\Crypto::CreateNewRandomKey(); 
$message = 'We are all living in a yellow submarine'; 
$ciphertext = \Defuse\Crypto\Crypto::Encrypt($message, $key); 
$plaintext = \Defuse\Crypto\Crypto::Decrypt($ciphertext, $key); 
echo "cipher is $ciphertext<br/> plaintext is $plaintext"; 

のいずれかを使用している

Fatal error: Uncaught Error: 
Call to undefined method Defuse\Crypto\Crypto::CreateNewRandomKey() in /var/www/encryptTest.php:12 
Stack trace: #0 {main} thrown in /var/www/encryptTest.php on line 12 

同じエラーメッセージが表示されます。それはディレクトリパスの単純な問題だと思われますが、.pharのものは私の外です!誰かが私を正しい方向に押し込むことができれば、本当に感謝しています。私は作曲家を使用していない、と私は本当にしたくないです。ありがとう。

答えて

0

私は答えを見つけた、3つのエラーがあった、ここに作業コードです。ドキュメントチュートリアル(tutorial.md)では、チュートリアルの例のrequire_once(/...phar)行が省略されていました。スクリプトはWebルートディレクトリまたは任意のサブディレクトリに置くことができますが、名前空間を持つクラスは引き続き正しく呼び出されます。だからここにある。

<?php 
use Defuse\Crypto\Key; 
use Defuse\Crypto\Crypto; 
require_once "{$_SERVER['DOCUMENT_ROOT']}/defuse/defuse-crypto.phar"; 

$key = Key::CreateNewRandomKey(); 
$message = 'StackOverflow is great'; 
$ciphertext = Crypto::Encrypt($message, $key); 
$plaintext = Crypto::Decrypt($ciphertext, $key); 
echo "cipher is $ciphertext<br/> plaintext is $plaintext"; 
?> 

あなたは、あなたがファイルを暗号化したい場合は保存され、パスワードで保護されたキーを使用して、

use Defuse\Crypto\File; 

したい場合

use Defuse\Crypto\KeyProtectedByPassword; 

を追加する必要があります。著者たちは.pharファイルを/ var/www/libに置くことを提案しましたが、/ var/www/defuse/srcにあるソースファイルとともに/ var/www/defuseに配置しました。 require_once()ステートメントで.pharファイルが正しく参照されている限り、名前空間の呼び出し方法には影響しません。

関連する問題