Как создать двухсторонние методы кодирования / декодирования с использованием специального ключа – PHP?

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

Вот как я хотел бы, чтобы он работал:

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. Полагаться на эту функцию крайне не рекомендуется.