我需要两个函数/方法,一个用于编码,一个用于解码。 这不是用于存储密码 。每个用户都有一个特定的密钥/盐来编码数据。
这就是我希望它的工作方式:
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
函数时,它都需要返回相同的内容。
我该怎么做?
答案 0 :(得分:47)
$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");
注意:自PHP 7.1.0起,mcrypt_decrypt已被弃用。强烈建议不要依赖此功能。