БлогNot. PHP: шифруем и дешифруем строку с помощью стандартных функций

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 онлайн в этом блоге


теги: программирование php textprocessing безопасность

05.02.2020, 19:18; рейтинг: 235