在 PHP 中,对称加密是一种常见的加密方式,它使用相同的密钥进行加密和解密。PHP 提供了多种对称加密算法,如 AES
、DES
、3DES
等。以下是使用 PHP 实现对称加密和解密的示例代码。
对称加密的基本概念
密钥:
加密和解密使用相同的密钥。
密钥长度取决于加密算法(如 AES-128、AES-192、AES-256)。
加密模式:
常见的加密模式有
ECB
、CBC
、CFB
等。推荐使用
CBC
模式,因为它更安全。初始化向量(IV):
用于增加加密的随机性,确保相同的明文加密后得到不同的密文。
IV 不需要保密,但需要与密文一起存储。
使用 OpenSSL 扩展实现对称加密
PHP 的 openssl
扩展提供了强大的加密功能,支持多种对称加密算法。
示例代码
<?phpclass SymmetricEncryption{ private $method = 'AES-256-CBC'; // 加密算法和模式 private $key; // 加密密钥 private $iv; // 初始化向量 public function __construct($key) { // 确保密钥长度符合算法要求 $this->key = substr(hash('sha256', $key), 0, 32); // 生成初始化向量 $this->iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length($this->method)); } /** * 加密数据 * * @param string $data 要加密的数据 * @return string 加密后的数据(base64 编码) */ public function encrypt($data) { // 加密数据 $encrypted = openssl_encrypt($data, $this->method, $this->key, OPENSSL_RAW_DATA, $this->iv); // 返回 base64 编码的密文和 IV return base64_encode($this->iv . $encrypted); } /** * 解密数据 * * @param string $data 要解密的数据(base64 编码) * @return string 解密后的数据 */ public function decrypt($data) { // 解码 base64 数据 $data = base64_decode($data); // 提取 IV $ivLength = openssl_cipher_iv_length($this->method); $iv = substr($data, 0, $ivLength); // 提取密文 $encrypted = substr($data, $ivLength); // 解密数据 return openssl_decrypt($encrypted, $this->method, $this->key, OPENSSL_RAW_DATA, $iv); }}// 示例用法$key = 'my_secret_key'; // 密钥$data = 'Hello, World!'; // 要加密的数据$crypto = new SymmetricEncryption($key);// 加密$encrypted = $crypto->encrypt($data);echo "加密后的数据: $encrypted\n";// 解密$decrypted = $crypto->decrypt($encrypted);echo "解密后的数据: $decrypted\n";?>
代码说明
加密算法和模式:
使用
AES-256-CBC
作为加密算法和模式。可以根据需要选择其他算法(如
AES-128-CBC
、DES-EDE3-CBC
等)。密钥处理:
使用
hash('sha256', $key)
生成固定长度的密钥。密钥长度必须符合加密算法的要求(如 AES-256 需要 32 字节的密钥)。
初始化向量(IV):
使用
openssl_random_pseudo_bytes()
生成随机的 IV。IV 需要与密文一起存储,以便解密时使用。
加密和解密:
使用
openssl_encrypt()
和openssl_decrypt()
进行加密和解密。密文和 IV 使用
base64_encode()
和base64_decode()
进行编码和解码。
本文关键词: PHP 对称 加密 函数 实现 数据
希望以上内容对你有所帮助!如果还有其他问题,请随时提问。 各类知识收集 拥有多年CMS企业建站经验,对 iCMS, LeCMS, ClassCMS, Fastadmin, PbootCMS, PHPCMS, 易优CMS, YzmCMS, 讯睿CMS, 极致CMS, Wordpress, HkCMS, YznCMS, WellCMS, ThinkCMF, 等各类cms的相互转化,程序开发,网站制作,bug修复,程序杀毒,插件定制都可以提供最佳解决方案。