aes加密php源码,AES加解密类源码 · ThinkPHP5高阶实战教程 --诠释为API开发而生 · 看云...
# 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开发而生 · 看云...相关推荐
- 学习加密(四)spring boot 使用RSA+AES混合加密,前后端传递参数加解密
学习加密(四)spring boot 使用RSA+AES混合加密,前后端传递参数加解密 技术标签: RSA AES RSA AES 混合加密 整合 前言: 为了提高安全性采用了RSA,但 ...
- Java带KeyGenerator(密钥生成器)生成AES加密,c++里面AES解密
之前文章Java里面生成AES加密,c++里面AES解密介绍了Java代码加密,c++代码解密.本文介绍:Java带KeyGenerator(密钥生成器)生成AES加密,c++里面AES解密 一.Ja ...
- SM4、AES,RSA,DES等加解密,以及一些其他常用工具方法整理
工作中接触到了SM4,AES,RSA等算法的加解密,这里整理下来,以备后续其他地方需要使用到. 主要用到的第三方包为hutool 后台引入依赖的方式为: <!-- hutool工具包 --> ...
- 五种常见的加密方式及常用的加解密工具
如果你是互联网公司的信息安全从业者,那么你可能会经常需要处理撞库事件,撞库是黑客的无聊"恶作剧".黑客收集已经在互联网上泄露的用户和密码信息,生成对应的字典表,并尝试批量登录其他网 ...
- php 3des 兼容java,PHP版3DES加解密类,可与java的3DES(DESede)加密方式兼容
/** * * PHP版3DES加解密类 * * 可与java的3DES(DESede)加密方式兼容 * * @Author: Luo Hui (farmer.luo at gmail.com) * ...
- 一个java的DES加解密类转换成C#
原文:一个java的DES加解密类转换成C# 一个java的des加密解密代码如下: //package com.visionsky.util;import java.security.*; //im ...
- Crypto++入门学习笔记(DES、AES、RSA、SHA-256)(加解密)
转自http://www.cppblog.com/ArthasLee/archive/2010/12/01/135186.html 最近,基于某些原因和需要,笔者需要去了解一下Crypto++库,然后 ...
- 什么是AES加密?详解AES加密算法原理流程
在密码学中,加密算法分为双向加密和单向加密.单向加密包括MD5.SHA等摘要算法,它们是不可逆的.双向加密包括对称加密和非对称加密,对称加密包括AES加密.DES加密等.双向加密是可逆的,存在密文的密 ...
- java aes加密 linux和windows,AES加密在windows與linux平台下顯示結果不同,解決方案
現象描述: 在 windows 操作系統下加解密正常,但部署到 linux 環境中相同的輸入加密結果不正確,並且每次運行返回的結果都不同.也就是說在windows下加解密都正常,一但部署到linux下 ...
最新文章
- 20145101《Java程序设计》第4周学习总结
- python 读取grib \grib2
- 图像处理与计算机视觉:基础,经典以及最近发展(3)计算机视觉中的信号处理与模式识别
- PocketSphinx语音识别系统的编译、安装和使用
- laravel邮件服务
- mfc 制作不同的文档模板mdi不同的子窗体_对IT项目售前解决方案制作的一些思考...
- 机器学习-多项式回归、正规方程(标准方程)
- python如何问问题_Python简单问答程序如何解决问题循环
- AD09由英文改中文菜单步骤
- 使用selenium模拟动态登录百度页面
- 【中文分词】最大熵马尔可夫模型MEMM
- Java--制作乱字游戏
- error日志的用法
- 【Debugger】解决springboot报错Failed to resolve org.junit.platform:junit-platform-launcher:1.x.x的两种解决方案
- 2021-10-20-Flask-01- 基本运行框架及配置文件
- TCP FIN_WAIT2由来
- APQ8064 camera AF 调试
- 【SpringMVC】SpringMVC模型数据+视图解析器
- SpringBoot 场景开发多面手成长手册
- 论文阅读——Plug-and-Play Algorithms for Large-scale Snapshot Compressive Imaging
热门文章
- mysql5.6+master+date_MySQL5.6的4个自带库详解
- 偷的名表卖掉能查到吗_搬运工偷走房主30万名表,转手以12.5万卖掉 南京警方快速追回...
- OpenShift 4 - 运行Spark和Zeppelin大数据应用
- python中的不可变对象_python中的可变与不可变对象
- rabbitmq中的消息有id吗_RabbitMQ 如何实现对同一个应用的多个节点进行广播
- 计算机应用技术知识,计算机应用技术主要学什么
- 怎么把竖列中的数相加python_关于python中pandas.DataFrame对行与列求和及添加新行与列示例代码...
- chart.js雷达图不显示刻度标签_Matplotlib从入门再也不放弃
- 艾为数字ic面试题_秋招 应聘FPGA/数字IC笔试面试经验分享(简单列举FPGA/数字IC公司)...
- sqlserver html文档,[SQLServer]从SQL中的一个表中导出HTML文件表格