Вот код шифрования:
function encrypt_decrypt($action, $string) {
$output = false;
$encrypt_method = "AES-256-CBC";
$secret_key = "ключ";
$secret_iv = openssl_random_pseudo_bytes(16);
$key = hash('sha256', $secret_key);
$iv = substr(hash('sha256', $secret_iv), 0, 16);
if ( $action == 'encrypt' ) {
$output = openssl_encrypt($string, $encrypt_method, $key, 0, $iv);
$output = base64_encode($output);
} else if( $action == 'decrypt' ) {
$output = openssl_decrypt(base64_decode($string), $encrypt_method, $key, 0, $iv);
}
return $output;
}
Вот пример:
$plain_txt = "Здравствуйте!";
echo "Plain Text = " .$plain_txt. "<br>";
$encrypted_txt = encrypt_decrypt('encrypt', $plain_txt);
echo "Encrypted Text = " .$encrypted_txt. "<br>";
$decrypted_txt = encrypt_decrypt('decrypt', $encrypted_txt);
echo "Decrypted Text = " .$decrypted_txt. "<br>";
Должно выводиться так:
Plain Text = Здравствуйте
Encrypted Text = "Зашифрованный вид"
Decrypted Text = Здравствуйте
Но выводится то ли не с правильной кодировкой, то ли я не знаю:
Plain Text = Здравствуйте!
Encrypted Text = "Зашифрованный вид"
Decrypted Text = �Ä�߀����҇ہ��уйте!
Я пробовал base64_encode заменить на utf8_encode, Но разницы нет