加密和解密存储在cookie中的信息

mr_*_*air 7 php mysql cookies

我需要安全地加密和解密有关cookie中用户(user_idpassword)的信息.

做这个的最好方式是什么 ?我需要哪些加密和解密功能?

我正在使用PHPMySQL示例将参加?

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函数

  • @Michiel:如果他要使用MD5,我会对decryptCookie()更感兴趣. (3认同)

Ark*_*rkh 8

不要将密码存储在cookie中.永远不要做这种事情.如果您想要某种方式让用户无需输入登录名和密码进行登录,您可以在登录时生成一些随机令牌(sha1(mt_rand())例如)并将此值存储在cookie和数据库中.

然后,在尝试识别用户时,您只需检查他的cookie中找到的值是否可以在您的数据库中找到.每次登录时生成新值(使用名称+密码或使用此cookie).