PHP正确进行AES加密解密的方法-程序员宅基地

技术标签: php  PHP  加密  AES  

废话不多说,直接上代码

<?php

namespace Aes;

class Aes
{
    /**
     * var string $method 加解密方法,可通过openssl_get_cipher_methods()获得
     */
    protected $method;

    /**
     * var string $secret_key 加解密的密钥
     */
    protected $secret_key;

    /**
     * var string $iv 加解密的向量,有些方法需要设置比如CBC
     */
    protected $iv;

    /**
     * var string $options (不知道怎么解释,目前设置为0没什么问题)
     */
    protected $options;

    /**
     * 构造函数
     *
     * @param string $key 密钥
     * @param string $method 加密方式
     * @param string $iv iv向量
     * @param mixed $options 还不是很清楚
     *
     */
    public function __construct($key, $method = 'AES-128-ECB', $iv = '', $options = 0)
    {
        // key是必须要设置的
        $this->secret_key = isset($key) ? $key : 'morefun';

        $this->method = $method;

        $this->iv = $iv;

        $this->options = $options;
    }

    /**
     * 加密方法,对数据进行加密,返回加密后的数据
     *
     * @param string $data 要加密的数据
     *
     * @return string
     *
     */
    public function encrypt($data)
    {
        return openssl_encrypt($data, $this->method, $this->secret_key, $this->options, $this->iv);
    }

    /**
     * 解密方法,对数据进行解密,返回解密后的数据
     *
     * @param string $data 要解密的数据
     *
     * @return string
     *
     */
    public function decrypt($data)
    {
        return openssl_decrypt($data, $this->method, $this->secret_key, $this->options, $this->iv);
    }
}

测试代码:

$aes = new OpenSSLAES('12345678');

$encrypted = $aes->encrypt('bbm是一家很傻逼的公司');

echo '要加密的字符串:bbm是一家很傻逼的公司<br>加密后的字符串:', $encrypted, '<hr>';

$decrypted = $aes->decrypt($encrypted);

echo '要解密的字符串:', $encrypted, '<br>解密后的字符串:', $decrypted;
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/GlatChen/article/details/79978875

智能推荐

element table固定表头,表的高度自适应解决方法_eltable流体高度固定表头-程序员宅基地

文章浏览阅读3.5k次。主要是通过在mounted生命周期中,改变tableHeight的值,来让表格的高度自适应。标签:<el-table ref="table" :data="tableData" :height="tableHeight"></el-table>vue中的ref解释第一种JS处理方式:export default { data(){ ..._eltable流体高度固定表头

在Ubuntu18.04安装GMT-6.1.1(在 Linux 下编译 GMT 源代码)_ubuntu 安装 gmt-程序员宅基地

文章浏览阅读1.9k次,点赞2次,收藏24次。参考:GMT中文社区写本文的目的:参考了CSDN上面许多安装GMT方法但是安装过程出现了各种问题,可能因为下载了官网的最新版本,而CSDN都是老版的安装方法有些地方不适用,走了好多弯路。后来才发现GMT中文社区的v6.1手册把你想知道的都罗列的非常清楚(免费下载),包括非常详细的安装步骤,下面是对应在Linux 下编译 GMT 源代码的详细步骤,亲测有效!1 、编译及运行依赖GMT 的编译及运行需要如下软件:• CMake: >=2.8.12• netCDF(>=4.0 且支持 net_ubuntu 安装 gmt

AS3.0-程序员宅基地

文章浏览阅读238次。┏━━━━━━━━━━━━━━━━━━┓ ┃ 第一部分:ActionScript 3 语言基础 ┃ ┗━━━━━━━━━━━━━━━━━━┛ ================================================ 第2章 ActionScript 3 语言基本元素 ==========================================..._as3.0 readobject

【SpringBoot】自定义启动Banner(附:使用生成艺术字体方法)_spring启动字体生成-程序员宅基地

文章浏览阅读4k次。我们知道Spring Boot项目启动时会在控制台打印出一个banner,下面演示如何定制这个banner。(1)首先在resources目录下创建一个banner.txt文件。(2)在这个文件中写入的文本将在项目启动时打印出来。比如我写入如下内容:------------------------wwww.jynet.top------------------..._spring启动字体生成

从0到1 | 0基础/转行 如何用3个月学会Python机器学习-程序员宅基地

文章浏览阅读1.4k次。如今Python在人工智能和数据分析领域有着不可替代的作用,众多机器学习的框架都支持Python API,数据分析、存储、获取、运算方便, 所以Python 已经成为人工智能领域机器学习的第一语言。写这篇文章的初衷也是因为现在好多朋友都想了解如何入门/转行Python机器学习,搭上人工智能这列二十一世纪的快车。再加上这个问题每隔一阵子就会有人提及,因此想写篇文章来个一劳永逸。文章的_ai 入门 pythod

springboot131企业oa管理系统-程序员宅基地

文章浏览阅读762次,点赞20次,收藏21次。1.1研究背景随着计算机技术的发展以及计算机网络的逐渐普及,互联网成为人们查找信息的重要场所,二十一世纪是信息的时代,所以信息的管理显得特别重要。因此,使用计算机来管理企业OA管理系统的相关信息成为必然。开发合适的企业OA管理系统,可以方便管理人员对企业OA管理系统的管理,提高信息管理工作效率及查询效率,有利于更好的为人们服务。1.2研究目的随着互联网技术的快速发展,网络时代的到来,网络信息也将会改变当今社会。各行各业在日常企业经营管理等方面也在慢慢的向规范化和网络化趋势汇合。

随便推点

Arduino - 多线程库 SCoop 应用 并发处理任务_scoop延时-程序员宅基地

文章浏览阅读1.4w次,点赞10次,收藏60次。原文:https://blog.csdn.net/wuli_dear_wang/article/details/77994377 相比原文做了一些改动,因为原文的 库文件下载地址失效了,我在 GitHub 找到了这个库的下载地址,有效的,在原文的基础上把下载地址换掉了。正文: 使用该库的【任务】功能,首先要做三..._scoop延时

conda使用清华镜像安装pytorch-程序员宅基地

文章浏览阅读4.2k次,点赞7次,收藏26次。conda使用清华镜像安装pytorch1. 首先,你的电脑得装anaconda这个东西2. 打开 Anaconda Prompt控制台3. 添加清华镜像conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/conda_conda使用清华镜像安装pytorch

git的ssh密钥生成与gitlab的密钥白名单导入_gitlab添加ssh 白名单-程序员宅基地

文章浏览阅读255次。1.ssh密钥:使用git的Git Bash Here(需要安装git,官网下载),输入cd–>enter–>ssh-keygen.exe–>一路enter下去即可。2.在.ssh文件中(通常在user文件夹)找到pub文件,用记事本打开,复制文本,在公司的GitLab上创建ssh密钥,粘贴文本即可。3.在sourceTree的工具–>选项–>ssh密钥中选择id..._gitlab添加ssh 白名单

PHP实验报告题目汇总(层次递进,全面丰富)_php运算符实验-程序员宅基地

文章浏览阅读2.9k次,点赞2次,收藏18次。我将本学期的多次php实验整理成了博客,将知识点一步步解析清楚。_php运算符实验

基于八叉树点云编码的优缺点_八叉树编码-程序员宅基地

文章浏览阅读2.1k次。基于八叉树点云编码的优缺点优点:结构简单,初步满足点云压缩的需求。缺点:由于八叉树数据结构本身特性,使得无法使用一些现有工具对几何编码进行性能提升,如预测编码、变换编码等。预测编码的原理是用预测值与原数值做差,一般而言,得到的残差的数据量会远远小于原数值,再进行变换编码、熵编码即可大大减少数据量。但是八叉树编码的结果是一串二进制序列,即使进行了预测也无法通过编码残差而减少数据量,也无法进行变化。因此基于八叉树编码的点云压缩中,几何比特的减少方向集中于上下文建模,即寄希望于熵编码来减少统计冗余_八叉树编码

Maven编译出现“java.lang.OutOfMemoryError: Java heap space”问题的解决办法-程序员宅基地

文章浏览阅读7.7k次。在执行mvn test 、mvn package 或者 mvn install命令时经常会出现[b]java.lang.OutOfMemoryError: Java heap space[/b] 问题,原因是工程较大而JVM的内存不够所导致的。解决办法:1.在mvn.bat中加入了set MAVEN_OPTS= -Xms512m -Xmx512m2.在环境变量中添加了..._maven-resources-test:casemanage-service: java.lang.outofmemoryerror: java he