PHP: шифруем и дешифруем строку с помощью стандартных функций
Библиотека OpenSSL известна, прежде всего, тем, что используется в протоколе HTTPS, которым мы обычно открываем наши web-страницы.
Начиная с версии 5.3.3, в PHP тоже есть соответствующее расширение, но примеров на него пока немного.
Попробуем зашфировать и расшифровать строку, а код проверим в актуальной версии PHP 7.X на локальном хосте XAMPP.
В первом примере строка шифруется и дешифруется с помощью некоторого статически заданного ключа.
<?php $simple_string = "Я, Вань, строка для шифрования, шизофрения, цифромания"; echo "Исходная строка: ".$simple_string.'<br>'; $ciphering = "AES-256-CTR"; //Метод шифрования $options = 0; $encryption_iv = '0123456789abcdef'; //Вектор из 16 символов для инициализации шифрования $encryption_key = "SecretKey"; //Ключ для шифрования $encryption = openssl_encrypt //Непосредственно шифрование ($simple_string, $ciphering, $encryption_key, $options, $encryption_iv); echo "Зашифрованная строка: ".$encryption.'<br>'; $decryption = openssl_decrypt //Дешифруем обратно с теми же данными ($encryption, $ciphering, $encryption_key, $options, $encryption_iv); echo "Расшифрованная строка: ".$decryption; ?>
Во втором примере нам нет нужды самим задавать ключ, будем его генерировать.
<?php $simple_string = "Я, Вань, строка для шифрования, шизофрения, цифромания"; echo "Исходная строка: ".$simple_string.'<br>'; $ciphering = "AES-256-CTR"; //Метод шифрования $options = 0; $iv_length = openssl_cipher_iv_length ($ciphering); //Получить длину инициализирующего вектора шифра $encryption_iv = random_bytes ($iv_length); //Сгенерироваать инициализирующий вектор $encryption_key = openssl_digest ($simple_string, 'sha512', true); // Вычислить дайджест для указанных данных с помощью указанного метода $encryption = openssl_encrypt //Непосредственно шифрование ($simple_string, $ciphering, $encryption_key, $options, $encryption_iv); echo "Зашифрованная строка: ".$encryption.'<br>'; $decryption = openssl_decrypt //Дешифруем обратно с теми же данными ($encryption, $ciphering, $encryption_key, $options, $encryption_iv); echo "Расшифрованная строка: ".$decryption; ?>
Вычисление хешей MD5, SHA1, CRC32 онлайн в этом блоге
05.02.2020, 19:18 [1757 просмотров]