Я пытаюсь зашифровать строку c помощью модуля mcrypt.
<?php
define('CRYPT_KEY','dPfsdfF95bfG4Wmls9J');
function code($source) {
$key = CRYPT_KEY;
$s = "";
// Открывает модуль
$td = mcrypt_module_open('des', '', 'ecb', '');
$key = substr($key, 0, mcrypt_enc_get_key_size($td));
$iv_size = mcrypt_enc_get_iv_size($td);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
// Инициализирует дескриптор шифрования и шифруем
if (mcrypt_generic_init($td, $key, $iv) != -1) {
$s = mcrypt_generic($td, $source);
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
}
return $s;
}
function decode($source) {
$key = CRYPT_KEY;
$s = "";
// Открывает модуль
$td = mcrypt_module_open('des', '', 'ecb', '');
$key = substr($key, 0, mcrypt_enc_get_key_size($td));
$iv_size = mcrypt_enc_get_iv_size($td);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
// Инициализирует дескриптор шифрования и дешифруем
if (mcrypt_generic_init($td, $key, $iv) != -1) {
$s = mdecrypt_generic($td, $source);
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
}
return $s;
}
$string = "dddfdf asdasd adasdasda aa23ER ASDSDADA FSADASDSADASD";
$code = code($string);
$decode = decode($code);
echo trim($decode);
?>
Если я вывожу $code, то получаю:
�B�+�]1/�St�I��l��� �*�n6M.2:����y�ױ��� 65533;1|��8В�B
Если пытаюсь записать в БД (строка типа TEXT в кодировке utf8_general_ci), то получаю:
�
Кодировка файла в UTF-8 (без BOM), пытался вставить header с кодировкой utf-8 - тот же результат.
В чём может быть проблема? Помогите пожалуйста!
Код брал здесь: http://ekimoff.ru/316/