Мне нужны две функции / методы, одна для кодирования, одна для декодирования. Это не для хранения паролей . Каждый пользователь будет иметь конкретный ключ / соль для кодирования данных.
Вот как я хотел бы, чтобы он работал:
function encode($str, $key) { // something fancy } function decode($str, $key) { // something fancy } $key = $logged_in_user->get_key(); $plain = 'abc abc 123 123'; $encoded_data = encode($plain, $key); // some_fancy_encrypted_data_that_is_really_cooooool $decoded_data = decode($encoded_data, $key); // abc abc 123 123
Другое дело, что каждый раз, когда я использую эту функцию, он должен возвращать то же самое каждый раз, когда я использую функцию encode
с одним и тем же ключом пользователя.
Как мне это сделать?
$myVarIWantToEncodeAndDecode
Определите ключ (соль, бульон и т. Д.): $key = "#&$sdfdfs789fs7d";
Чтобы закодировать:
$encoded = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($key), $myVarIWantToEncodeAndDecode, MCRYPT_MODE_CBC, md5(md5($key))));
Для декодирования:
$decoded = rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($key), base64_decode($encoded), MCRYPT_MODE_CBC, md5(md5($key))), "\0");
Примечание: mcrypt_decrypt был отключен с PHP 7.1.0. Полагаться на эту функцию крайне не рекомендуется.