php aes PKCS5Padding
时间: 2023-10-13 22:42:26 浏览: 133
在PHP中使用AES加密并应用PKCS5Padding填充,可以使用openssl_encrypt和openssl_decrypt函数。这里是一个示例:
```php
function encryptAES($data, $key, $iv) {
$blockSize = 16;
$paddedData = pkcs5_pad($data, $blockSize);
return openssl_encrypt($paddedData, 'AES-128-CBC', $key, OPENSSL_RAW_DATA, $iv);
}
function decryptAES($encryptedData, $key, $iv) {
$decryptedData = openssl_decrypt($encryptedData, 'AES-128-CBC', $key, OPENSSL_RAW_DATA, $iv);
return pkcs5_unpad($decryptedData);
}
function pkcs5_pad($data, $blockSize) {
$pad = $blockSize - (strlen($data) % $blockSize);
return $data . str_repeat(chr($pad), $pad);
}
function pkcs5_unpad($paddedData) {
$pad = ord($paddedData[strlen($paddedData) - 1]);
return substr($paddedData, 0, strlen($paddedData) - $pad);
}
```
这里的encryptAES函数接受要加密的数据、密钥和初始化向量(IV)作为参数,并返回加密后的数据。decryptAES函数接受要解密的数据、密钥和IV作为参数,并返回解密后的数据。
在加密过程中,我们首先使用pkcs5_pad函数对数据进行填充,然后使用openssl_encrypt函数进行加密。在解密过程中,我们使用openssl_decrypt函数对加密后的数据进行解密,并使用pkcs5_unpad函数去除填充。
请记住,对称加密算法中的填充方式是很重要的,以确保数据能够正确地加密和解密。在使用AES加密时,PKCS5Padding是一种常用的填充方式。
阅读全文