2013-06-30 95 views
0

我使用這個功能:加密和解密餅乾

function encryptData($value) { 
    $key = "top 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 $crypttext; 
} 

function decryptData($value) { 
    $key = "top secret key"; 
    $crypttext = $value; 
    $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); 
} 

的login.php

$time = time() + 60*60*24*30*12; //store cookie for one year 
setcookie('cookie_name', encryptCookie('username'), $time, '/'); 
$cookie_value = decryptCookie($_COOKIE['cookie_name']); 

該Cookie已設置並工作正常。

問題:

  • 我如何解密會的$_COOKIE['cookie_name']的內容,並將其打印?

我需要打印該行:

so.addVariable("uid", "<? if ($_COOKIE['username']) print $_COOKIE['username']; ?>"); 
+2

邊注:歐洲央行弱,不要使用它。至少使用CBC。 –

回答

0

您提供的代碼,做加密和解密自己。

爲了節省加密的用戶名的cookie,你可以只使用這樣的:

$time = time()+60*60*24*30*12; //store cookie for one year 
setcookie('username', encryptCookie($username), $time, '/'); 

稍後檢索從加密cookie中的用戶名,使用此:

echo decryptCookie($_COOKIE['username']); 
+0

謝謝你的cookie設置,但它不會顯示我得到空白我的意思是使用回聲decryptCookie($ _ COOKIE ['username']); – Demko