[英]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.