簡體   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