繁体   English   中英

解密不适用于PHP中的AES 128位CBC

[英]Decryption is not working with AES 128 bit CBC in PHP

我正在尝试使用PHP中的AES 128 bit CBC加密来加密和解密令牌。 如果我尝试加密和解密令牌,则结果不是原始令牌。 这是我的代码:

$decrKey = "123456789abcdefg";
$decrIV = "xyz123456789abcd";

function encryptAES($data,$key,$iv)
{
$decr= mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, base64_encode($data), MCRYPT_MODE_CBC, $iv);    
return $decr;   
}    

function decryptAES($data,$key,$iv)
{
$decr= mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, base64_decode($data), MCRYPT_MODE_CBC, $iv);    
return $decr;   
}      

$token = "abcdefghijk";
echo $token;

$tokenEncrypt = encryptAES($token,$decrKey,$decrIV);
echo "encrypt: ".$tokenEncrypt ;

$tokenDecrypt = decryptAES($tokenEncrypt,$decrKey,$decrIV);
echo "decrypt: ".$tokenDecrypt ;

我想念什么?

您应该以64为基数对加密方法的结果(称为密文)进行编码,并在解密之前再次对其进行解码。 当前,您正在使用base 64对加密函数中的纯文本而不是密文进行编码。 无需对纯文本进行编码。 但是,对纯文本使用定义良好的将是一个好主意。

$encr = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $data, MCRYPT_MODE_CBC, $iv));
return $encr

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM