2014-03-02 41 views
0

我想在有人加入我的網站時創建「激活」鍵。這將通過電子郵件發送給他們,當他們點擊鏈接時,將激活他們的帳戶。我想在激活碼中加入一些信息(從安全的角度來看,沒有什麼重要的東西 - 他們只是在註冊時登錄的頁面等等,所以我可以將它們重定向回那個頁面)。試圖在php中編寫一個簡單的加密/解密函數

我有以下幾點:

// THIS TO ENCRYPT THE DATA 
$secret_key = "This is my SeCrEt key"; 
$etype = MCRYPT_RIJNDAEL_256; 
$iv = mcrypt_create_iv(mcrypt_get_iv_size($etype, MCRYPT_MODE_ECB), MCRYPT_RAND); 
$output = mcrypt_encrypt($etype, $secret_key, $string_to_encrypt, MCRYPT_MODE_CBC, $iv); 
$output = base64_encode ($output); 
$output = urlencode($output); 


// THIS TO DECRYPT THE DATA - THIS ISN'T WORKING? 
$secret_key = "This is my SeCrEt key"; 
$etype = MCRYPT_RIJNDAEL_256; 
$iv = mcrypt_create_iv(mcrypt_get_iv_size($etype, MCRYPT_MODE_ECB), MCRYPT_RAND); 

$string_to_decrypt = urldecode($string_to_decrypt); 
$string_to_decrypt = base64_decode($string_to_decrypt); 
$output = mcrypt_decrypt($etype, $secret_key, $string_to_decrypt, MCRYPT_MODE_CBC, $iv); 

我使用base64編碼和URL編碼,因爲我將通過電子郵件發送的鏈接。

解密完全不起作用。有任何想法嗎?

+0

只是一個建議;你也可以使用像sha1(mt_rand(1,999999))這樣的隨機代碼,並將相關信息保存在數據庫中。對我來說,對激活碼使用各種加密並不是真的有意義...... – Bram

+0

@Bram,它只是讓我可以'解碼'它給我留下相關信息。我需要能夠解碼我使用的任何東西。謝謝;-) –

+1

對於特定的加密/解密,IV必須是相同的。 –

回答

1

對於特定的加密/解密,IV必須是相同的。