php对称加密AES加密解密

这篇具有很好参考价值的文章主要介绍了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模式进行加密。
<?php

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字节长度的密钥
$aes = new AES($key);
$data = 'Hello, World!';
$encryptedECB = $aes->encrypt($data);
echo 'AES-128-ECB加密后的数据:' . $encryptedECB . "\n";
$decryptedECB = $aes->decrypt($encryptedECB);
echo 'AES-128-ECB解密后的数据:' . $decryptedECB . "\n";
// 使用示例:
$key2 = '0123456789abcdef0123456789abcdef'; // 32字节长度的密钥
$iv2 = 'fedcba9876543210'; // 32字节长度的初始向量
$aes2 = new AES($key2, $iv2);
$encryptedCBC = $aes2->encryptCBC($data);
echo 'AES-256-CBC加密后的数据:' . $encryptedCBC . "\n";
$decryptedCBC = $aes2->decryptCBC($encryptedCBC);
echo 'AES-256-CBC解密后的数据:' . $decryptedCBC . "\n";

php aes加密,php,加密,php,开发语言,同态加密,hash-index,哈希算法文章来源地址https://www.toymoban.com/news/detail-701853.html

到了这里,关于php对称加密AES加密解密的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 用java语言写一个AES算法,使用AES(CBC模式)对数据进行加密或解密。加解密用到的密钥(Key)和密钥偏移量(IV),代码实例类编写。

    以下是一个使用Java编写的AES算法实例,使用AES(CBC模式)对数据进行加密和解密。代码中包括了生成随机密钥和密钥偏移量的方法。 java Copy code import javax.crypto.*; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec; import java.security.InvalidAlgorithmParameterException; import

    2024年02月07日
    浏览(62)
  • 前端AES加密解密

    前端经常会遇到这种接口和参数需要加密的情况,目前用的最多的就是aes加密了。以下就是操作步骤。以下方式适用各个前端框架,请自行根据框架修改对应语法 1.安装 CryptoJS 这个库就是用来加密的核心,直接打开项目终端,输入 npm install crypto-js --save 2. 新建 crypto.js 在 @/

    2024年02月13日
    浏览(61)
  • uniapp AES加密解密

    uniapp里我知道的有两种aes加密解密方式。 一、引入crypto-js 1.需要在uniapp项目根目录里,打开命令行,执行如下命令: 2.在项目根目录,创建一个utils文件夹,并创建一个aes_endecrypt.js文件  3.在main.js文件中,引入方法,并注册为全局方法 4.在页面中使用aes加密,解密 二、第二

    2024年02月13日
    浏览(49)
  • Android AES加密解密

     AES算法全称Advanced Encryption Standard。它是典型的“对称加密算法”,主要作用是保证私密信息不被泄露。 一、密钥 密钥是AES算法实现加密和解密的根本,因为 它对明文的加密和解密需要使用同一个密钥 。 AES支持三种长度的密钥:128位,192位,256位。 二、填充 AES算法在对明

    2024年02月04日
    浏览(61)
  • kotlin aes 加密解密

    aes算法对key的字节数有要求 所以对输入的key要做填充处理

    2024年02月07日
    浏览(52)
  • AES加密解密python实现

            关于现代密码学算法,可以查看以下博客全面了解 CISSP考试要求里的“应用密码学”内容辅助记忆趣味串讲_晓翔仔的博客-CSDN博客         AES的细节知识,可以查阅 AES加密算法的详细介绍与实现_TimeShatter的博客-CSDN博客          AES 加密最常用的模式就是

    2024年02月05日
    浏览(79)
  • 在线AES加密/解密工具

    在线AES加密/解密工具 http://lzltool.com/AES http://lzltool.com/AES

    2024年02月12日
    浏览(51)
  • java:AES加密和解密

    1 前言 对称加密,即单秘钥加密,指加密和解密的过程中,使用相同的秘钥,相比于非对称加密,因仅有一把钥匙,故而速度更快,更适合解密大文件(常见于如视频文件的加密解密中)。AES算法就属于对称加密中的一种。 2 使用 依赖引入: AES加密与解密的工具类封装: 执

    2024年02月11日
    浏览(58)
  • Golang里的AES加密、解密

    CBC/ECB/CFB 解密方法 输出结果: 输出结果: 输出结果: 首先使用openssl生成公私钥

    2024年02月11日
    浏览(53)
  • 使用Hutool对AES加密解密

    1. 前言 AES是一种对称加密,所谓对称加密就是加密与解密使用的秘钥是一个。 2. Maven环境安装 3.加密模式 AES 加密最常用的模式就是 ECB模式 和 CBC 模式,当然还有很多其它模式,他们都属于AES加密。ECB模式和CBC 模式俩者区别就是 ECB 不需要 iv偏移量,而CBC需要。 4.AES加密使用

    2024年02月12日
    浏览(64)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包