Я загрузил «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
Это работает, и я пытался заставить это работать в течение довольно долгого времени. Это поздний ответ, но любой, кто пытается это сделать, работает.
Вы, вероятно, не должны делать это таким образом, но если я нахожу лучший способ, который вы должны делать, я отредактирую этот ответ.