解密算法有时会起作用

时间:2016-03-11 10:16:16

标签: php encryption

我想加密电子邮件以便稍后解密。

那时我不关心安全,我只是想让它起作用。邮件存储在$umail

研究 stackoverflow 我找到了以下适用的代码:

 $keyword = "Key";
 $iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC), MCRYPT_DEV_URANDOM);
 $activation = base64_encode($iv.mcrypt_encrypt(MCRYPT_RIJNDAEL_128, hash('sha256', $keyword, true), $umail, MCRYPT_MODE_CBC, $iv));
 $activation = rawurlencode($activation);

$ activation是加密邮件。

我将加密邮件($ activation)作为URL的一部分。

$key = $_GET['key'];
$key = rawurldecode($key);
$keyword = "Key";
$requestMail = base64_decode($key);
$ivDec = substr($requestMail, 0, mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC));

$decrypted = rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_128, hash('sha256', $keyword, true), substr($requestMail, mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC)), MCRYPT_MODE_CBC, $ivDec), "\0");

有时会显示我输入的电子邮件。其他时候,使用相同的电子邮件输入,当加密的单词具有" +"时,它会显示奇怪的符号。

有什么建议吗?

它已经解决了。这是我需要的帖子:

PHP - Plus sign with GET query

我注意到当生成+时,解密被破坏了。在该帖子中解释了+是一个PHP保留字,因此它必须转换为%2B,然后重新转换为+。为此,您可以使用:rawurlencode,rawurldecode。

代码已更新。

享受!

0 个答案:

没有答案