在PHP中使用AES进行加密和解密

简介: 在PHP中使用AES进行加密和解密

PHP 中使用 AES(Advanced Encryption Standard)进行加密和解密通常涉及使用 OpenSSL 扩展。以下是使用 PHP 进行 AES 加密和解密的基本原理:

 

### AES 加密:

 

1. **选择加密算法和模式**:

  - AES 是一种对称加密算法,常用的模式包括 ECB、CBC、CFB、OFB 等。

 

2. **生成密钥和初始化向量(IV)**:

  - 生成一个密钥和一个初始化向量(IV),密钥通常是一个固定长度的字符串,IV 是用于增加加密强度的随机值。

 

3. **加密数据**:

  - 使用 OpenSSL 函数(如 `openssl_encrypt`)对明文数据进行加密。

  - 提供明文数据、加密算法、密钥、初始化向量和选项等参数。

  - 例如:`openssl_encrypt($data, 'AES-256-CBC', $key, OPENSSL_RAW_DATA, $iv)`。

 

4. **获取加密后的密文**:

  - 加密后的数据将以二进制格式返回,通常可以使用 Base64 编码将其转换为可打印字符。

 

### AES 解密:

 

1. **解密数据**:

  - 使用 OpenSSL 函数(如 `openssl_decrypt`)对密文数据进行解密。

  - 提供密文数据、加密算法、密钥、初始化向量和选项等参数。

  - 例如:`openssl_decrypt($encryptedData, 'AES-256-CBC', $key, OPENSSL_RAW_DATA, $iv)`。

 

2. **获取解密后的明文**:

  - 解密后的数据将以二进制格式返回,可能需要根据具体情况进行进一步处理。

 

PHP 中使用 OpenSSL 扩展可以很容易地实现 AES 加密和解密。以下是一个简单的示例代码,演示如何在 PHP 中使用 AES-256-CBC 加密和解密数据:

 

```php
<?php
function encryptAES($data, $key, $iv) {
    $encrypted = openssl_encrypt($data, 'AES-256-CBC', $key, 0, $iv);
    return base64_encode($encrypted);
}
 
function decryptAES($data, $key, $iv) {
    $decrypted = openssl_decrypt(base64_decode($data), 'AES-256-CBC', $key, 0, $iv);
    return $decrypted;
}
 
$key = 'YourSecretKey'; // 密钥,必须是 16、24 或 32 字符长度的字符串
$iv = 'YourIV1234567890'; // 初始化向量,必须是 16 字符长度的字符串
$data = 'Hello, World!';
 
$encryptedData = encryptAES($data, $key, $iv);
echo "Encrypted Data: $encryptedData\n";
 
$decryptedData = decryptAES($encryptedData, $key, $iv);
echo "Decrypted Data: $decryptedData\n";
?>
```

 

在上面的示例中:

- `encryptAES` 函数用于对数据进行 AES 加密,返回 base64 编码后的密文。

- `decryptAES` 函数用于对密文进行 AES 解密,返回解密后的明文。

- `key` 是用于加密和解密的密钥,必须是 16、24 或 32 字符长度的字符串。

- `iv` 是用于 AES 加密的初始化向量,必须是 16 字符长度的字符串。

- `$data` 是要加密的原始数据。

 

请确保在实际应用中妥善保管密钥和初始化向量,并根据需求选择合适的密钥长度和加密模式。

相关文章
|
2月前
|
存储 缓存 安全
php项目源码加密之Zend Guard Loader加密的代码解密可能性很小-优雅草卓伊凡
php项目源码加密之Zend Guard Loader加密的代码解密可能性很小-优雅草卓伊凡
115 2
|
5月前
|
算法 安全 数据安全/隐私保护
基于AES的遥感图像加密算法matlab仿真
本程序基于MATLAB 2022a实现,采用AES算法对遥感图像进行加密与解密。主要步骤包括:将彩色图像灰度化并重置大小为256×256像素,通过AES的字节替换、行移位、列混合及轮密钥加等操作完成加密,随后进行解密并验证图像质量(如PSNR值)。实验结果展示了原图、加密图和解密图,分析了图像直方图、相关性及熵的变化,确保加密安全性与解密后图像质量。该方法适用于保护遥感图像中的敏感信息,在军事、环境监测等领域具有重要应用价值。
198 35
|
12月前
|
存储 安全 数据安全/隐私保护
浅谈对称加密(AES与DES)
浅谈对称加密(AES与DES)
304 1
|
9月前
|
Linux PHP 数据安全/隐私保护
2024授权加密系统PHP网站源码
2024授权加密系统PHP网站源码
258 58
|
数据安全/隐私保护
aes之ecb模式的加密解密
aes之ecb模式的加密解密
|
11月前
|
安全 测试技术 Go
Python 和 Go 实现 AES 加密算法的技术详解
Python 和 Go 实现 AES 加密算法的技术详解
554 0
|
7月前
|
云安全 安全 数据建模
《数字证书:互联网世界的"身份证"与"防盗门"》 ——揭秘网络安全背后的加密江湖
在2023年某深夜,上海陆家嘴金融公司机房遭遇黑客攻击,神秘青铜大门与九大掌门封印的玉牌突现,阻止了入侵。此门象征数字证书,保障网络安全。数字证书如验钞机识别假币,保护用户数据。它通过SSL/TLS加密、CA认证和非对称加密,构建安全通信。证书分为DV、OV、EV三类,分别适合不同场景。忽视证书安全可能导致巨额损失。阿里云提供一站式证书服务,助力企业部署SSL证书,迎接未来量子计算和物联网挑战。
|
9月前
|
安全 算法 网络协议
【网络原理】——图解HTTPS如何加密(通俗简单易懂)
HTTPS加密过程,明文,密文,密钥,对称加密,非对称加密,公钥和私钥,证书加密
|
9月前
|
SQL 安全 网络安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将从网络安全漏洞、加密技术和安全意识三个方面进行探讨,旨在提高读者对网络安全的认识和防范能力。通过分析常见的网络安全漏洞,介绍加密技术的基本原理和应用,以及强调安全意识的重要性,帮助读者更好地保护自己的网络信息安全。
175 10
|
9月前
|
存储 SQL 安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
随着互联网的普及,网络安全问题日益突出。本文将介绍网络安全的重要性,分析常见的网络安全漏洞及其危害,探讨加密技术在保障网络安全中的作用,并强调提高安全意识的必要性。通过本文的学习,读者将了解网络安全的基本概念和应对策略,提升个人和组织的网络安全防护能力。