
在 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()进行编码和解码。
希望以上内容对你有所帮助!如果还有其他问题,请随时提问。 各类知识收集 拥有多年CMS企业建站经验,对 iCMS, LeCMS, ClassCMS, Fastadmin, PbootCMS, PHPCMS, 易优CMS, YzmCMS, 讯睿CMS, 极致CMS, Wordpress, HkCMS, YznCMS, WellCMS, ThinkCMF, 等各类cms的相互转化,程序开发,网站制作,bug修复,程序杀毒,插件定制都可以提供最佳解决方案。


