要将加密后的字符长度修改为32位,可以修改aes_encrypt函数中的$result变量为以下代码:

$result = bin2hex($iv) . bin2hex($encrypted);

这样,$iv的长度将为16位,$encrypted的长度将为32位。

然后,可以通过修改aes_decrypt函数中的$iv变量和$encrypted变量的提取方式来解密32位的加密字符。可以使用以下代码来修改aes_decrypt函数:

$iv = hex2bin(substr($encryptedData, 0, 32)); $encrypted = hex2bin(substr($encryptedData, 32));

这样,$iv将提取32位长度的字符,$encrypted将提取剩下的字符。

修改后的代码如下:

function aes_encrypt($data, $key) {  
    $iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length('aes-256-cbc'));  
    $encrypted = openssl_encrypt($data, 'aes-256-cbc', $key, OPENSSL_RAW_DATA, $iv);  
    $result = bin2hex($iv) . bin2hex($encrypted);  
    return $result;  
}  
  
function aes_decrypt($encryptedData, $key) {  
    $iv = hex2bin(substr($encryptedData, 0, 32));  
    $encrypted = hex2bin(substr($encryptedData, 32));  
    $decrypted = openssl_decrypt($encrypted, 'aes-256-cbc', $key, OPENSSL_RAW_DATA, $iv);  
    return $decrypted;  
}  
  
$data = "22222222222222222222";  
$key = "123";  
  
$encrypted = aes_encrypt($data, $key);  
echo "Encrypted: " . $encrypted . "\n";  
  
$decrypted = aes_decrypt($encrypted, $key);  
echo "Decrypted: " . $decrypted . "\n";  

这样修改后的代码将加密后的字符长度为32位,并可以正确解密

function aes_encrypt$data $key $iv = openssl_random_pseudo_bytesopenssl_cipher_iv_lengthaes-256-cbc; $encrypted = openssl_encrypt$data aes-256-cbc $key OPENSSL_RAW_DATA $iv; $result =

原文地址: https://www.cveoy.top/t/topic/iELe 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录