php对称加密AES加密解密
短信预约 -IT技能 免费直播动态提醒
AES-128-ECB和AES-256-CBC是两种常见的AES加密模式,它们在加密方式和安全性上有以下区别:
- 加密方式:
- AES-128-ECB:ECB(Electronic Codebook)模式是最简单的AES加密模式,它将数据分成固定大小的块,每个块独立加密。这意味着相同的明文块将始终加密为相同的密文块,因此ECB模式不适合加密重复模式的数据。
- AES-256-CBC:CBC(Cipher Block Chaining)模式是一种分组密码模式,每个明文块都与前一个密文块进行异或操作后再加密。这种链接机制使得每个密文块依赖于前一个密文块,增加了安全性。
- 密钥长度:
- AES-128-ECB:使用128位密钥进行加密,密钥长度为16字节。
- AES-256-CBC:使用256位密钥进行加密,密钥长度为32字节。
- 安全性:
- AES-128-ECB:由于ECB模式的特点,相同的明文块将始终加密为相同的密文块,可能导致一些安全问题。此外,ECB模式不提供消息完整性验证和抵抗重放攻击的能力。
- AES-256-CBC:CBC模式通过使用初始向量和链接机制,增加了安全性和抵抗重放攻击的能力。相同的明文块将根据前一个密文块的不同加密为不同的密文块,提供了更好的数据混淆性和安全性。 综上所述,AES-256-CBC相对于AES-128-ECB提供了更高的安全性,尤其是在处理重复模式的数据和抵抗重放攻击时更为有效。因此,在实际应用中,如果安全性要求较高,通常会选择AES-256-CBC模式进行加密。
class AES { private $key; private $iv; public function __construct($key, $iv) { $this->key = $key; $this->iv = $iv; } public function encrypt($data) { $encrypted = openssl_encrypt($data, 'AES-128-ECB', $this->key, OPENSSL_RAW_DATA); return base64_encode($encrypted); } public function decrypt($encryptedData) { $decrypted = openssl_decrypt(base64_decode($encryptedData), 'AES-128-ECB', $this->key, OPENSSL_RAW_DATA); return $decrypted; } public function encryptCBC($data) { $encrypted = openssl_encrypt($data, 'AES-256-CBC', $this->key, OPENSSL_RAW_DATA, $this->iv); return base64_encode($encrypted); } public function decryptCBC($encryptedData) { $decrypted = openssl_decrypt(base64_decode($encryptedData), 'AES-256-CBC', $this->key, OPENSSL_RAW_DATA, $this->iv); return $decrypted; }}// 使用示例:$key = '0123456789abcdef'; // 16字节长度的密钥$iv = 'fedcba9876543210'; // 16字节长度的初始向量$aes = new AES($key, $iv);$data = 'Hello, World!';$encryptedECB = $aes->encrypt($data);echo 'AES-128-ECB加密后的数据:' . $encryptedECB . "\n";$decryptedECB = $aes->decrypt($encryptedECB);echo 'AES-128-ECB解密后的数据:' . $decryptedECB . "\n";$encryptedCBC = $aes->encryptCBC($data);echo 'AES-256-CBC加密后的数据:' . $encryptedCBC . "\n";$decryptedCBC = $aes->decryptCBC($encryptedCBC);echo 'AES-256-CBC解密后的数据:' . $decryptedCBC . "\n";
来源地址:https://blog.csdn.net/weixin_39934453/article/details/131568980
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341