Простое шифрование / дешифрование строк utf-8 в php5 с секретным ключом - PullRequest
1 голос
/ 09 марта 2011

Может кто-нибудь посоветовать мне тему "Простое шифрование / дешифрование строк utf-8 в php5 с секретным ключом"?Несколько советов по независимым библиотекам?(нет зависимости от 32/64-битных машин).

$encryptedTextUTF8 = simpleEncrypt($originalTextUTF8, $secret);
echo simpleDecrypt($encryptedTextUTF8, $secret); // outputs $originalTextUTF8

Ответы [ 2 ]

2 голосов
/ 09 марта 2011

Использование расширения mcrypt: http://us.php.net/manual/en/book.mcrypt.php Может быть возможно что-то вроде следующего:

$pass      = 'password_string_to_be_encrypted';
$string    = 'password_string_to_be_decrypted';
$salt      = 'your_salt';
$pepper    = 'your_extra_salt';
$encrypted = base64_encode( mcrypt_encrypt( MCRYPT_RIJNDAEL_256, md5( $salt . $pass . $pepper ), $string, MCRYPT_MODE_CBC, md5( md5( $salt . $pass . $pepper ))));
$decrypted = rtrim( mcrypt_decrypt( MCRYPT_RIJNDAEL_256, md5($salt . $pass . $pepper), base64_decode( $string ), MCRYPT_MODE_CBC, md5( md5( $salt . $pass . $pepper))), "\0");

edit: Доказано неправильно, я предлагаю удалить часть шифрования md5.Что касается того, что лучше, я еще не знаю, но я постараюсь приехать, чтобы обновить мой пост, когда у меня было достаточно времени для расследования .. извините!:)

1 голос
/ 09 марта 2011

Строки PHP не знают (или не заботятся), какова их кодировка символов.Они просто коллекция байтов.Это позволяет вам полностью не беспокоиться о UTF-8 здесь.

Поскольку вы запрашиваете шифрование с симметричным ключом, вы, вероятно, захотите использовать расширение mcrypt .Имеется широкий выбор шифров , включая AES («Rijndael»).Самому Mcrypt не важно, работает он на 32-битной или 64-битной машине.

Я не собираюсь приводить пример кода, потому что использование шифрования требует некоторых нетривиальных знаний о том, что яне уверен, что могу правильно объяснить вам в одном только коде , а копирование и вставка кода шифрования - плохая, плохая идея.

Понимание того, как работают режимы блочного шифрования поможет вам выбрать правильный режим для того, что вы делаете.Это понимание также будет необходимо, если вы хотите, чтобы программы, разработанные на других языках, работали с вашими зашифрованными данными, поскольку они будут использовать разные режимы шифрования по умолчанию и разные схемы заполнения .

...