# AES加解密类源码

> 根据网络整理

~~~

/**

* Created by PhpStorm.

* Power by Mikkle

* QQ:776329498

* Date: 2017/7/3

* Time: 20:48

*/

namespace app\base\controller;

class AES

{

/**

* AES加密、解密类

* 用法:

*

* // 实例化类

* // 参数$_bit:格式,支持256、192、128,默认为128字节的

* // 参数$_type:加密/解密方式,支持cfb、cbc、nofb、ofb、stream、ecb,默认为ecb

* // 参数$_key:密钥,默认为 _Mikkle_AES_Key_

* $tcaes = new TCAES();

* $string = 'laohu';

* // 加密

* $encodeString = $tcaes->encode($string);

* // 解密

* $decodeString = $tcaes->decode($encodeString);

*

*/

private $_bit = MCRYPT_RIJNDAEL_256;

private $_type = MCRYPT_MODE_CBC;

private $_key = '_Mikkle_AES_Key_'; // 密钥 必须16位 24位

private $_use_base64 = true;

private $_iv_size = null;

private $_iv = null;

/**

* @param string $_key 密钥

* @param int $_bit 默认使用128字节

* @param string $_type 加密解密方式

* @param boolean $_use_base64 默认使用base64二次加密

*/

public function __construct($_key = '', $_bit = 128, $_type = 'ecb', $_use_base64 = true){

// 加密字节

if(192 === $_bit){

$this->_bit = MCRYPT_RIJNDAEL_192;

}elseif(128 === $_bit){

$this->_bit = MCRYPT_RIJNDAEL_128;

}else{

$this->_bit = MCRYPT_RIJNDAEL_256;

}

// 加密方法

if('cfb' === $_type){

$this->_type = MCRYPT_MODE_CFB;

}elseif('cbc' === $_type){

$this->_type = MCRYPT_MODE_CBC;

}elseif('nofb' === $_type){

$this->_type = MCRYPT_MODE_NOFB;

}elseif('ofb' === $_type){

$this->_type = MCRYPT_MODE_OFB;

}elseif('stream' === $_type){

$this->_type = MCRYPT_MODE_STREAM;

}else{

$this->_type = MCRYPT_MODE_ECB;

}

// 密钥

if(!empty($_key)){

$this->_key = $_key;

}

// 是否使用base64

$this->_use_base64 = $_use_base64;

$this->_iv_size = mcrypt_get_iv_size($this->_bit, $this->_type);

$this->_iv = mcrypt_create_iv($this->_iv_size, MCRYPT_RAND);

}

/**

* 加密

* @param string $string 待加密字符串

* @return string

*/

public function encode($string){

//

if(MCRYPT_MODE_ECB === $this->_type){

$encodeString = mcrypt_encrypt($this->_bit, $this->_key, $string, $this->_type);

}else{

$encodeString = mcrypt_encrypt($this->_bit, $this->_key, $string, $this->_type, $this->_iv);

}

if($this->_use_base64){

$encodeString = base64_encode($encodeString);

}

return $encodeString;

}

/**

* 解密

* @param string $string 待解密字符串

* @return string

*/

public function decode($string){

if($this->_use_base64){

$string = base64_decode($string);

}

if(MCRYPT_MODE_ECB === $this->_type){

$decodeString = mcrypt_decrypt($this->_bit, $this->_key, $string, $this->_type);

}else{

$decodeString = mcrypt_decrypt($this->_bit, $this->_key, $string, $this->_type, $this->_iv);

}

return $decodeString;

}

}

~~~

aes加密php源码,AES加解密类源码 · ThinkPHP5高阶实战教程 --诠释为API开发而生 · 看云...相关推荐

  1. 学习加密(四)spring boot 使用RSA+AES混合加密,前后端传递参数加解密

    学习加密(四)spring boot 使用RSA+AES混合加密,前后端传递参数加解密 技术标签: RSA  AES  RSA AES  混合加密  整合 前言:    为了提高安全性采用了RSA,但 ...

  2. Java带KeyGenerator(密钥生成器)生成AES加密,c++里面AES解密

    之前文章Java里面生成AES加密,c++里面AES解密介绍了Java代码加密,c++代码解密.本文介绍:Java带KeyGenerator(密钥生成器)生成AES加密,c++里面AES解密 一.Ja ...

  3. SM4、AES,RSA,DES等加解密,以及一些其他常用工具方法整理

    工作中接触到了SM4,AES,RSA等算法的加解密,这里整理下来,以备后续其他地方需要使用到. 主要用到的第三方包为hutool 后台引入依赖的方式为: <!-- hutool工具包 --> ...

  4. 五种常见的加密方式及常用的加解密工具

    如果你是互联网公司的信息安全从业者,那么你可能会经常需要处理撞库事件,撞库是黑客的无聊"恶作剧".黑客收集已经在互联网上泄露的用户和密码信息,生成对应的字典表,并尝试批量登录其他网 ...

  5. php 3des 兼容java,PHP版3DES加解密类,可与java的3DES(DESede)加密方式兼容

    /** * * PHP版3DES加解密类 * * 可与java的3DES(DESede)加密方式兼容 * * @Author: Luo Hui (farmer.luo at gmail.com) * ...

  6. 一个java的DES加解密类转换成C#

    原文:一个java的DES加解密类转换成C# 一个java的des加密解密代码如下: //package com.visionsky.util;import java.security.*; //im ...

  7. Crypto++入门学习笔记(DES、AES、RSA、SHA-256)(加解密)

    转自http://www.cppblog.com/ArthasLee/archive/2010/12/01/135186.html 最近,基于某些原因和需要,笔者需要去了解一下Crypto++库,然后 ...

  8. 什么是AES加密?详解AES加密算法原理流程

    在密码学中,加密算法分为双向加密和单向加密.单向加密包括MD5.SHA等摘要算法,它们是不可逆的.双向加密包括对称加密和非对称加密,对称加密包括AES加密.DES加密等.双向加密是可逆的,存在密文的密 ...

  9. java aes加密 linux和windows,AES加密在windows與linux平台下顯示結果不同,解決方案

    現象描述: 在 windows 操作系統下加解密正常,但部署到 linux 環境中相同的輸入加密結果不正確,並且每次運行返回的結果都不同.也就是說在windows下加解密都正常,一但部署到linux下 ...

最新文章

  1. 20145101《Java程序设计》第4周学习总结
  2. python 读取grib \grib2
  3. 图像处理与计算机视觉:基础,经典以及最近发展(3)计算机视觉中的信号处理与模式识别
  4. PocketSphinx语音识别系统的编译、安装和使用
  5. laravel邮件服务
  6. mfc 制作不同的文档模板mdi不同的子窗体_对IT项目售前解决方案制作的一些思考...
  7. 机器学习-多项式回归、正规方程(标准方程)
  8. python如何问问题_Python简单问答程序如何解决问题循环
  9. AD09由英文改中文菜单步骤
  10. 使用selenium模拟动态登录百度页面
  11. 【中文分词】最大熵马尔可夫模型MEMM
  12. Java--制作乱字游戏
  13. error日志的用法
  14. 【Debugger】解决springboot报错Failed to resolve org.junit.platform:junit-platform-launcher:1.x.x的两种解决方案
  15. 2021-10-20-Flask-01- 基本运行框架及配置文件
  16. TCP FIN_WAIT2由来
  17. APQ8064 camera AF 调试
  18. 【SpringMVC】SpringMVC模型数据+视图解析器
  19. SpringBoot 场景开发多面手成长手册
  20. 论文阅读——Plug-and-Play Algorithms for Large-scale Snapshot Compressive Imaging

热门文章

  1. mysql5.6+master+date_MySQL5.6的4个自带库详解
  2. 偷的名表卖掉能查到吗_搬运工偷走房主30万名表,转手以12.5万卖掉 南京警方快速追回...
  3. OpenShift 4 - 运行Spark和Zeppelin大数据应用
  4. python中的不可变对象_python中的可变与不可变对象
  5. rabbitmq中的消息有id吗_RabbitMQ 如何实现对同一个应用的多个节点进行广播
  6. 计算机应用技术知识,计算机应用技术主要学什么
  7. 怎么把竖列中的数相加python_关于python中pandas.DataFrame对行与列求和及添加新行与列示例代码...
  8. chart.js雷达图不显示刻度标签_Matplotlib从入门再也不放弃
  9. 艾为数字ic面试题_秋招 应聘FPGA/数字IC笔试面试经验分享(简单列举FPGA/数字IC公司)...
  10. sqlserver html文档,[SQLServer]从SQL中的一个表中导出HTML文件表格