PHP中AES对称加密实践

在PHP中,可以使用 OpenSSL 扩展来进行 AES 对称加密。下面是一个示例代码来演示如何使用 PHP 进行 AES 加密和解密:

<?php
// 设置加密算法和密钥
$method = 'aes-256-cbc'; // 使用 AES-256-CBC 算法
$key = 'MySecretKey123'; // 密钥必须是 16、24 或 32 字节长度

//动态key
//$id = uniqid();
//$key = md5($id);

// 要加密的明文数据
$data = "Hello, world!";

// 加密数据
$iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length($method)); // 随机生成初始化向量
$encrypted = openssl_encrypt($data, $method, $key, OPENSSL_RAW_DATA, $iv);
$encrypted = base64_encode($encrypted . $iv); // 将加密数据和初始化向量进行编码

echo "加密后的数据:" . $encrypted . "\n";

// 解密数据
$decoded = base64_decode($encrypted);
$iv_length = openssl_cipher_iv_length($method);
$iv = substr($decoded, -$iv_length);
$decrypted = openssl_decrypt(substr($decoded, 0, -$iv_length), $method, $key, OPENSSL_RAW_DATA, $iv);

echo "解密后的数据:" . $decrypted . "\n";
?>

在上述代码中,我们使用 AES-256-CBC 加密算法和一个密钥进行加密和解密。首先,我们随机生成一个初始化向量(IV),并将其与加密后的数据进行编码,然后输出加密后的数据。接着,我们使用相同的密钥和初始化向量对加密数据进行解密,输出解密后的结果。

请注意,密钥必须是 16、24 或 32 字节长度的字符串,具体取决于要使用的 AES 密钥长度。在示例代码中,我们选用了 256 位的密钥,因此密钥长度为 32 字节。

确保 OpenSSL 扩展在你的 PHP 配置中启用,可以通过检查 php.ini 文件或者使用 phpinfo() 函数来确认。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值