我需要安全地加密和解密有关cookie中用户(user_id和password)的信息.
做这个的最好方式是什么 ?我需要哪些加密和解密功能?
我正在使用PHP和MySQL示例将参加?
Mik*_*elo 12
例如
Set encrypted cookie:
<?php
$time = time()+60*60*24*30*12; //store cookie for one year
setcookie('cookie_name', encryptCookie('cookie_value'),$time,'/');
?>
Get encrypted cookie value:
<?php
$cookie_value = decryptCookie($_COOKIE['cookie_name']);
?>
Run Code Online (Sandbox Code Playgroud)
这是加密解密cookie的功能:
<?php
function encryptCookie($value){
if(!$value){return false;}
$key = 'The Line Secret Key';
$text = $value;
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
$crypttext = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $text, MCRYPT_MODE_ECB, $iv);
return trim(base64_encode($crypttext)); //encode for cookie
}
function decryptCookie($value){
if(!$value){return false;}
$key = 'The Line Secret Key';
$crypttext = base64_decode($value); //decode cookie
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
$decrypttext = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $crypttext, MCRYPT_MODE_ECB, $iv);
return trim($decrypttext);
}
?>
Run Code Online (Sandbox Code Playgroud)
你可以在这里阅读更多关于mcrypt函数的信息: php mcrypt函数
不要将密码存储在cookie中.永远不要做这种事情.如果您想要某种方式让用户无需输入登录名和密码进行登录,您可以在登录时生成一些随机令牌(sha1(mt_rand())例如)并将此值存储在cookie和数据库中.
然后,在尝试识别用户时,您只需检查他的cookie中找到的值是否可以在您的数据库中找到.每次登录时生成新值(使用名称+密码或使用此cookie).