这通常是由于在加密和解密过程中使用了不同的编码方式导致的。可以使用与加密时相同的编码格式来解密文本。例如,如果在加密时使用了 base64 编码,则需要在解码时使用相同的编码方式。以下是一个使用 phpseclib 实现 aes 加密和解密的示例代码:
use phpseclib\Crypt\AES;
$key = 'my secret key';
$text = 'hello world';
// 加密
$aes = new AES(AES::MODE_CBC);
$aes->setKey($key);
$ciphertext = $aes->encrypt($text);
// 解密
$aes = new AES(AES::MODE_CBC);
$aes->setKey($key);
$aes->disablePadding();
$plaintext = $aes->decrypt($ciphertext);
echo $plaintext;
在上面的示例中,我们使用 aes-128-cbc 模式对文本进行加密和解密。加密时,我们将密钥设置为'my secret key”,并'hello world”文本加密为 $ciphertext。解密时,我们使用相同的密钥来解密 $ciphertext,并将 padding 禁用以防止解密后出现奇怪的字符。最后,我们打印出解密后的 $plaintext 变量,这应该是'hello world”。