0


php对称加密AES加密解密

AES-128-ECB和AES-256-CBC是两种常见的AES加密模式,它们在加密方式和安全性上有以下区别:

  1. 加密方式: - AES-128-ECB:ECB(Electronic Codebook)模式是最简单的AES加密模式,它将数据分成固定大小的块,每个块独立加密。这意味着相同的明文块将始终加密为相同的密文块,因此ECB模式不适合加密重复模式的数据。- AES-256-CBC:CBC(Cipher Block Chaining)模式是一种分组密码模式,每个明文块都与前一个密文块进行异或操作后再加密。这种链接机制使得每个密文块依赖于前一个密文块,增加了安全性。
  2. 密钥长度: - AES-128-ECB:使用128位密钥进行加密,密钥长度为16字节。- AES-256-CBC:使用256位密钥进行加密,密钥长度为32字节。
  3. 安全性: - AES-128-ECB:由于ECB模式的特点,相同的明文块将始终加密为相同的密文块,可能导致一些安全问题。此外,ECB模式不提供消息完整性验证和抵抗重放攻击的能力。- AES-256-CBC:CBC模式通过使用初始向量和链接机制,增加了安全性和抵抗重放攻击的能力。相同的明文块将根据前一个密文块的不同加密为不同的密文块,提供了更好的数据混淆性和安全性。 综上所述,AES-256-CBC相对于AES-128-ECB提供了更高的安全性,尤其是在处理重复模式的数据和抵抗重放攻击时更为有效。因此,在实际应用中,如果安全性要求较高,通常会选择AES-256-CBC模式进行加密。
  1. class AES {
  2. private $key;
  3. private $iv;
  4. public function __construct($key, $iv) {
  5. $this->key = $key;
  6. $this->iv = $iv;
  7. }
  8. public function encrypt($data) {
  9. $encrypted = openssl_encrypt($data, 'AES-128-ECB', $this->key, OPENSSL_RAW_DATA);
  10. return base64_encode($encrypted);
  11. }
  12. public function decrypt($encryptedData) {
  13. $decrypted = openssl_decrypt(base64_decode($encryptedData), 'AES-128-ECB', $this->key, OPENSSL_RAW_DATA);
  14. return $decrypted;
  15. }
  16. public function encryptCBC($data) {
  17. $encrypted = openssl_encrypt($data, 'AES-256-CBC', $this->key, OPENSSL_RAW_DATA, $this->iv);
  18. return base64_encode($encrypted);
  19. }
  20. public function decryptCBC($encryptedData) {
  21. $decrypted = openssl_decrypt(base64_decode($encryptedData), 'AES-256-CBC', $this->key, OPENSSL_RAW_DATA, $this->iv);
  22. return $decrypted;
  23. }
  24. }
  25. // 使用示例:
  26. $key = '0123456789abcdef'; // 16字节长度的密钥
  27. $iv = 'fedcba9876543210'; // 16字节长度的初始向量
  28. $aes = new AES($key, $iv);
  29. $data = 'Hello, World!';
  30. $encryptedECB = $aes->encrypt($data);
  31. echo 'AES-128-ECB加密后的数据:' . $encryptedECB . "\n";
  32. $decryptedECB = $aes->decrypt($encryptedECB);
  33. echo 'AES-128-ECB解密后的数据:' . $decryptedECB . "\n";
  34. $encryptedCBC = $aes->encryptCBC($data);
  35. echo 'AES-256-CBC加密后的数据:' . $encryptedCBC . "\n";
  36. $decryptedCBC = $aes->decryptCBC($encryptedCBC);
  37. echo 'AES-256-CBC解密后的数据:' . $decryptedCBC . "\n";


本文转载自: https://blog.csdn.net/weixin_39934453/article/details/131568980
版权归原作者 PHP隔壁老王邻居 所有, 如有侵权,请联系我们删除。

“php对称加密AES加密解密”的评论:

还没有评论