PHP7 对应的 AES/CBC/PKCS5Padding 加密解密
PHP7 中可以使用 openssl_encrypt
和 openssl_decrypt
函数来实现 AES/CBC/PKCS5Padding 加密解密。
function aes_encrypt($data, $key, $iv) {
return base64_encode(openssl_encrypt($data, 'AES-128-CBC', $key, OPENSSL_RAW_DATA, $iv));
}
function aes_decrypt($data, $key, $iv) {
return openssl_decrypt(base64_decode($data), 'AES-128-CBC', $key, OPENSSL_RAW_DATA, $iv);
}
openssl_encrypt
: 用于加密数据。
data
: 需要加密的原始数据。AES-128-CBC
: 指定加密算法为 AES-128-CBC 模式。$key
: 加密密钥。OPENSSL_RAW_DATA
: 表示输出原始二进制数据,不进行 base64 编码。$iv
: 初始化向量,用于 CBC 模式,需要随机生成。openssl_decrypt
: 用于解密数据。
openssl_encrypt
类似。base64_encode
和 base64_decode
: 用于对加密结果进行 base64 编码,方便传输和存储。
// 生成随机密钥和初始化向量
$key = openssl_random_pseudo_bytes(16);
$iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length('AES-128-CBC'));
// 需要加密的数据
$data = 'Hello, world!';
// 加密
$encrypted_data = aes_encrypt($data, $key, $iv);
echo $encrypted_data . "\n";
// 解密
$decrypted_data = aes_decrypt($encrypted_data, $key, $iv);
echo $decrypted_data . "\n";
openssl_encrypt
和 openssl_decrypt
函数还支持其他参数,可以根据需要进行调整。通过 PHP 的 openssl_encrypt
和 openssl_decrypt
函数,可以方便地实现 AES/CBC/PKCS5Padding 加密解密。在实际应用中,需要注意密钥管理、填充模式、编码等细节,以保证数据的安全性。
请注意: 加密不是万能的,它只是保护数据的一种手段。在实际应用中,还需要结合其他安全措施,如访问控制、输入验证等,才能构建一个安全的系统。
如果您有其他问题,欢迎随时提问!