Как использовать «defuse / php-encryption»?

Я загрузил «defuse / php-encryption» из GitHub.

Я попробовал пример, основанный здесь: как вы шифруете и расшифровываете строку PHP? но мне это не удалось.

«test.php» находится в той же папке с «Crypto.php»:

<?php // This requires https://github.com/defuse/php-encryption // php composer.phar require defuse/php-encryption // Note: Crypto::Encrypt() returns raw binary, so you may want to use base64_encode() and base64_decode()for storing/transmitting ciphertexts to prevent encoding bugs. ini_set('display_errors', 1); error_reporting(E_ALL); require ("Crypto.php"); // Do this once then store it somehow: $key = Crypto::CreateNewRandomKey(); $message = 'We are all living in a yellow submarine'; $ciphertext = Crypto::Encrypt($message, $key); $plaintext = Crypto::Decrypt($ciphertext, $key); if ($ciphertext === $plaintext) {echo "<br><font color=green>Operation cryp - décrypt OK !!!!</font><br><br><br>$ciphertext === $plaintext<br><br>";} else {echo "<br><font color=red>Operation cryp - décrypt NOK !!!!</font><br><br>$ciphertext === $plaintext<br><br>";} ?> 

Результат:

Неустранимая ошибка: Class 'Crypto' не найден в /home/zideesdubj/www/_tests2enfants/_test_session/php-encryption-master/php-encryption-master/src/test.php в строке 10

С вашей помощью я заменил «require (« Crypto.php »); «require (« php-encryption-master / autoload.php »), но это тот же результат:

Неустранимая ошибка: Class 'Crypto' не найден в /home/zideesdubj/www/_tests2enfants/_test_session/php-encryption-master/test.php в строке 10

У вас есть базовый пример использования «defuse / php-encryption»?

Я понимаю, что это вопрос из манекена, но я не нахожу ответа или учебника в Интернете.

Благодаря !

Класс Crypto – это пространство имен. Вы пробовали добавить

 use \Defuse\Crypto\Crypto; 

в начале вашего скрипта php использовать правильное пространство имен?

$ ciphertext никогда не будет === до $ plaintext, просто хедз-ап

Чтобы получить правильное пространство имен, мне пришлось использовать: $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); $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);

Вопрос SO, на который ссылается искатель, был, по-видимому, написан против старой версии пакета до его интеграции с Composer. [С тех пор указанный ответ был переписан]

Заменить:

 require ("Crypto.php"); 

С:

 require('vendor/autoload.php'); 

И помните, берегите SO-ответы с солью. Просто потому, что ответ принят, не обязательно означает, что он либо правильный, либо текущий.

У меня буквально была такая же проблема, и я просто ее исправил.

Если вы загружаете «defuse-crypto.phar» из репозитория GitHub ( https://github.com/defuse/php-encryption/releases ), используйте

 require_once("defuse-crypto.phar"); 

затем используйте

 use Defuse\Crypto\whichever_one_you_want_to_load 

Это работает, и я пытался заставить это работать в течение довольно долгого времени. Это поздний ответ, но любой, кто пытается это сделать, работает.

Вы, вероятно, не должны делать это таким образом, но если я нахожу лучший способ, который вы должны делать, я отредактирую этот ответ.