PHP实现的AES加密、解密封装类与用法示例

PHP实现的AES加密、解密封装类与用法示例

简介

AES是目前最常用的对称加密算法,其应用范围非常广泛,如数据安全传输、文件加密等。PHP作为一种常用的语言,在实现AES加密、解密时也提供了很好的支持。

本文将介绍如何使用PHP实现AES加解密,并封装成简便的类文件。同时,本文会提供两个用例,让读者更好地了解如何使用该功能库。

实现AES加密、解密

PHP中提供了openssl扩展,可用于实现AES加解密。下面分别介绍加密和解密的过程:

AES加密

/**
 * 对数据进行AES加密
 * @param string $data 需要加密的数据
 * @param string $key 密钥
 * @param string $iv 向量
 * @return string
 */
function aesEncrypt($data, $key, $iv)
{
    $data = openssl_encrypt($data, 'AES-128-CBC', $key, OPENSSL_RAW_DATA, $iv);
    return base64_encode($data);
}

上述代码实现了AES加密过程。在这里,使用openssl_encrypt()函数实现加密功能,该函数的前四个参数分别为加密算法、key、数据、flags。其中,padding和向量都是可以通过flag选项提供的。

AES解密

/**
 * 对数据进行AES解密
 * @param string $data 需要解密的数据
 * @param string $key 密钥
 * @param string $iv 向量
 * @return string
 */
function aesDecrypt($data, $key, $iv)
{
    $data = base64_decode($data);
    return openssl_decrypt($data, 'AES-128-CBC', $key, OPENSSL_RAW_DATA, $iv);
}

上述代码实现了AES解密过程。与加密类似,使用openssl_decrypt()函数实现解密,同样也可以指定padding和向量等参数。

封装成类文件

有了上面的加解密过程,我将其封装成了类文件Aes.php,方便实际开发过程中直接调用。

class Aes
{
    /**
     * 加密
     * @param string $data 需要加密的数据
     * @param string $key 密钥
     * @param string $iv 向量
     * @return string
     */
    public static function aesEncrypt($data, $key, $iv)
    {
        $data = openssl_encrypt($data, 'AES-128-CBC', $key, OPENSSL_RAW_DATA, $iv);
        return base64_encode($data);
    }

    /**
     * 解密
     * @param string $data 需要解密的数据
     * @param string $key 密钥
     * @param string $iv 向量
     * @return string
     */
    public static function aesDecrypt($data, $key, $iv)
    {
        $data = base64_decode($data);
        return openssl_decrypt($data, 'AES-128-CBC', $key, OPENSSL_RAW_DATA, $iv);
    }
}

用例

用法示例一

加密数据:hello world

密钥:myaeskey12345

向量:1234567890123456

$data = "hello world";
$key = "myaeskey12345";
$iv = "1234567890123456";
$encryptData = Aes::aesEncrypt($data, $key, $iv); // 加密后数据
$decryptData = Aes::aesDecrypt($encryptData, $key, $iv); // 解密后数据

用法示例二

加密数据:{"name":"user1","age":18}

密钥:myaeskey67890

向量:9876543210987654

$data = '{"name":"user1","age":18}';
$key = "myaeskey67890";
$iv = "9876543210987654";
$encryptData = Aes::aesEncrypt($data, $key, $iv); // 加密后数据
$decryptData = Aes::aesDecrypt($encryptData, $key, $iv); // 解密后数据

在这里,用例一和用例二分别展示了如何应用于加密数据和解密数据中,并指定密钥和向量。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PHP实现的AES加密、解密封装类与用法示例 - Python技术站

(0)
上一篇 2023年5月26日
下一篇 2023年5月26日

相关文章

  • 图文详解vscode配置运行php项目完整版

    以下是“图文详解VSCode配置运行PHP项目完整版”的完整使用攻略,包括安装PHP、安装VSCode、配置PHP环境、配置VSCode插件、创建PHP项目、调试PHP代码等内容。 安装PHP 在开始使用VSCode开发PHP项目之前,您需要先安装PHP。您可以从PHP官方站下载最新版本的PHP,并按照安装向导进行装。安装完成后,您在命令行中运行php -v…

    PHP 2023年5月12日
    00
  • php基本函数汇总

    PHP基本函数汇总 PHP是一种服务器端脚本语言,它被广泛用于Web开发。PHP提供了许多常用的函数,让开发者能够快速、轻松地处理常见的任务。这篇文章将介绍一些PHP的基本函数,并提供一些示例来帮助您理解它们的用法。 字符串函数 strlen() strlen()函数用于获取字符串的长度,它返回一个字符串的字节数。以下是一个示例: $str = "…

    PHP 2023年5月26日
    00
  • php中的登陆login实例代码

    我可以为您提供有关“php中的登录login实例代码”的完整攻略。 首先,一个基本的登录系统主要包括以下步骤: 用户输入用户名和密码 PHP代码将用户名和密码与数据库中存储的信息进行比较 如果用户名和密码匹配,则将用户重定向到应用程序的主页,否则将用户转发回登录页面并显示错误消息。 以下是一个基本的PHP登录脚本示例,其中包含上述步骤的实现: <?ph…

    PHP 2023年5月23日
    00
  • php简单分页类实现方法

    让我来为您详细讲解“PHP简单分页类实现方法”的完整攻略。 1. 确定分页需求 在开始实现分页类之前,需要了解分页的具体需求,例如每页显示数量、总数据量、当前页码等,这些信息将作为分页类的初始化参数。在本次示例中,我们假设需求如下: 每页显示10条数据; 总共有100条数据; 当前页码为2。 2. 实现分页类 2.1 确定类的属性和方法 根据需求,我们需要实…

    PHP 2023年5月27日
    00
  • PHP实现数组的笛卡尔积运算示例

    实现数组的笛卡尔积运算是一种常见的数据操作,下面是PHP实现数组的笛卡尔积运算示例的完整攻略: 理解笛卡尔积运算 在开始编写PHP代码之前,需要先理解笛卡尔积运算的概念和特点。简单来说,笛卡尔积运算是一种将多个集合中的元素进行排列组合的方式。例如,对于两个集合A={a,b}和B={c,d},它们的笛卡尔积为{(a, c), (a, d), (b, c), (…

    PHP 2023年5月26日
    00
  • 利用PHP实现一个简单的用户登记表示例

    下面是利用PHP实现一个简单的用户登记示例的详细攻略: 1. 确定需求和功能 在开始编写代码之前,我们需要先明确我们的需求和实现的功能是什么。在这个用户登记示例中,我们需要用到一下功能: 用户输入自己的用户名和密码 点击提交按钮,将用户名和密码提交到服务器进行验证 如果用户名不存在,就将该用户的信息添加到我们的数据库中 如果用户名已经存在,则在页面上显示错误…

    PHP 2023年5月27日
    00
  • Redis实现分布式锁的实例讲解

    Redis实现分布式锁的完整攻略 1. 什么是分布式锁 在分布式系统中,由于多个进程/线程访问同一资源,我们需要一种机制来保证各个进程/线程之间依次互斥地访问,避免出现资源竞争、数据混乱等问题。这种机制就被称为分布式锁。 2. Redis如何实现分布式锁 2.1 setnx和expire实现分布式锁 Redis提供了setnx命令,用于设置一个键值对,如果该…

    PHP 2023年5月27日
    00
  • PHP函数用法详解【初始化、嵌套、内置函数等】

    PHP函数用法详解 1. 函数的初始化 函数是一段封装好的代码块,它可以在程序中反复调用,极大地方便了代码的重复使用和维护。定义一个函数需要用到 function 关键字,后面跟着函数名和一组圆括号,括号内可以定义参数,最后是一组花括号内的函数体。 // 示例:定义一个计算两个数之和的函数 function add($num1, $num2) { $sum …

    PHP 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部