Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
尝试用php编写一个简单的加密/解密函数_Php_Encryption_Mcrypt - Fatal编程技术网

尝试用php编写一个简单的加密/解密函数

尝试用php编写一个简单的加密/解密函数,php,encryption,mcrypt,Php,Encryption,Mcrypt,我想在有人加入我的网站时创建一个“激活”密钥。这将通过电子邮件发送给他们,当他们单击链接时,它将激活他们的帐户。我想在激活密钥中加入一些信息(从安全角度看,没有什么大不了的——只是他们注册时在哪个页面上,等等,这样我就可以将他们重定向回那个页面) 我有以下资料: // THIS TO ENCRYPT THE DATA $secret_key = "This is my SeCrEt key"; $etype = MCRYPT_RIJNDAEL_256; $iv = mcrypt_create_i

我想在有人加入我的网站时创建一个“激活”密钥。这将通过电子邮件发送给他们,当他们单击链接时,它将激活他们的帐户。我想在激活密钥中加入一些信息(从安全角度看,没有什么大不了的——只是他们注册时在哪个页面上,等等,这样我就可以将他们重定向回那个页面)

我有以下资料:

// 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编码和urlencoding,因为我将通过电子邮件发送链接


解密根本不起作用。有什么想法吗?

对于特定的加密/解密,IV必须是相同的。

只是一个建议;您也可以使用随机代码,如
sha1(mt_rand(1999999))
,并将相关信息保存在数据库中。对我来说,对一个激活码使用各种加密方式是没有意义的…@Bram,这只是为了让我能够“解码”它,留下相关信息。我需要能够解码我使用的任何东西。谢谢;-)对于特定的加密/解密,IV必须相同。@YolandaRuiz对其进行排序,谢谢。把它作为答案加起来,我会把它勾起来。