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

yizhihongxing

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日

相关文章

  • php抓取页面与代码解析 推荐

    作为网站作者,我可以提供有关“php抓取页面与代码解析 推荐”的完整攻略,包括以下步骤: 选择合适的工具:在PHP中,使用cURL库抓取网络页面是一种非常常见的方法。这个库可以通过允许你指定URL,然后将响应从服务器读取到PHP变量中的方式来实现。除此之外,如果想要解析HTML、XML等页面,可以使用第三方库,如DOMDocument。 发送HTTP请求:通…

    PHP 2023年5月23日
    00
  • php笔记之:有规律大文件的读取与写入的分析

    PHP笔记之:有规律大文件的读取与写入的分析 在 PHP 中处理大文件是一件很常见的任务。本篇笔记将介绍如何有效地读取和写入大文件。 读取大文件 当需要读取大文件时,最好不要一次读取整个文件到内存中,而应该分块读取。下面是示例代码,演示了如何分块读取: $handle = fopen(‘large_file.txt’, ‘r’); $buffer_size …

    PHP 2023年5月26日
    00
  • 帖几个PHP的无限分类实现想法~

    下面给出详细讲解“帖几个PHP的无限分类实现想法~”的完整攻略,具体步骤如下: 确定数据结构 无限分类指的是一个分类下可以有多个子分类,并且子分类中也可以包含子分类,因此最合适的数据结构是树形结构,树形结构可以用多种方式来实现,例如: 嵌套集合模型 父子链表模型 在这里,我们以嵌套集合模型为例进行讲解。 数据库设计 对于使用嵌套集合模型实现无限分类,需要在数…

    PHP 2023年5月27日
    00
  • qq群作业一键提醒功能怎么使用?

    使用Markdown格式编写“qq群作业一键提醒功能”的完整攻略如下: 介绍 “qq群作业一键提醒功能”的实现需要使用到QQ机器人,依靠机器人发送消息的方式实现提醒的功能。其中,需要借助一些第三方库来实现机器人的逻辑。本攻略将详细介绍以和风机器人为例的实现过程。 步骤 首先,需要申请一份和风机器人的API密钥,获取方法可以参考和风天气官网API文档。 在群内…

    PHP 2023年5月26日
    00
  • PHP中isset()和unset()函数的用法小结

    来详细讲解一下“PHP中isset()和unset()函数的用法小结”。 isset()函数的用法 在 PHP 中,我们可以使用 isset() 函数来判断一个变量是否已经被声明和赋值。该函数接收待测试的变量作为参数,返回一个布尔值 true 或 false,表明该变量是否被设置。 isset()函数的语法 isset($var); 其中 $var 是要检测…

    PHP 2023年5月26日
    00
  • php 解决substr()截取中文字符乱码问题

    当使用PHP中的substr()函数截取中文字符时,可能会出现乱码问题。这是因为中文字符在计算机中使用的不是单一的字节,而是多字节存储的,导致在截取时可能截到中间位置,从而出现编码错误。以下是解决该问题的完整攻略。 第一步:确定字符集编码 首先要确定字符集编码,包括源字符串的编码和系统默认的编码。常见的字符集编码有UTF-8、GB2312、GBK等。可以使用…

    PHP 2023年5月26日
    00
  • php读取文件内容到数组的方法

    当我们需要读取一个文件的内容时,如果想要把每一行的数据都读入到一个数组中,我们可以使用PHP提供的file函数。file函数会把文件中的每一行读取为一个数组中的元素。 具体的操作方法如下: 1.读取文件到数组 $array = file($filename, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); 该函…

    PHP 2023年5月26日
    00
  • 高亮度显示php源代码

    让我来详细讲解一下“高亮度显示PHP源代码”的完整攻略。 一、使用代码块高亮显示PHP源代码 在Markdown中,我们可以使用三个反引号(“`)来表示代码块,在第一个反引号后面加上编程语言的名称来实现代码块高亮显示。 下面是一个PHP代码块的示例: <?php // 定义一个常量 define(‘PI’, 3.14); // 定义一个圆的半径 $r…

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