<?php
/**
* Desc: Aes 加解密 php7.1+
* Class: Aes
* Package: app\common\lib
* User: manzb
* Date: 2018/10/18 17:30
*/ namespace app\common\lib; class Aes
{
private $iv = '';
private $key = '';
private $method = ''; function __construct ()
{
$aes = config('admin.aes');
/**
* $aes 内容
'aes' => [
'key' => '309w4wb42104160d2g6806lv1ki60f98',//aes加密盐
'method' => 'AES-256-CBC',//加密方式
'hex' => '00000000000000000000000000000000',//生成iv参数用,貌似是为了安卓ios相互兼容取的这个值
],
可根据每个用户账号的不同设置不同的key字段
*/
$this->method = $aes['method'];
$this->key = hash('sha256', $aes['key'], true);
$this->iv = $this->hex2iv($aes['hex']);
} /**
* 加密
* @param $str
* @return string
*/
public function encrypt ($str)
{
$encrypt = openssl_encrypt($str, $this->method, $this->key, OPENSSL_RAW_DATA, $this->iv);
return base64_encode($encrypt);
} /**
* 解密
* @param $str
* @return string
*/
public function decrypt ($str)
{
$decrypted = openssl_decrypt(base64_decode($str), $this->method, $this->key, OPENSSL_RAW_DATA, $this->iv);
return $decrypted;
} /**
* 生成iv参数
* @param $hex
* @return string
*/
private function hex2iv ($hex)
{
$iv = '';
for ($i = 0; $i < strlen($hex) - 1; $i += 2) {
$iv .= chr(hexdec($hex[$i] . $hex[$i + 1]));
}
return $iv;
}
}

AES加解密算法的更多相关文章

  1. AES加解密算法Qt实现

    [声明] (1) 本文源码 在一位未署名网友源码基础上,利用Qt编程,实现了AES加解密算法,并添加了文件加解密功能.在此表示感谢!该源码仅供学习交流,请勿用于商业目的. (2) 图片及描述 除图1外 ...

  2. AES加解密算法在Android中的应用及Android4.2以上版本调用问题

     from://http://blog.csdn.net/xinzheng_wang/article/details/9159969 AES加解密算法在Android中的应用及Android4.2以上 ...

  3. 最强加密算法?AES加解密算法Matlab和Verilog实现

    目录 背景 AES加密的几种模式 基本运算 AES加密原理 Matlab实现 Verilog实现 Testbench 此本文首发于公众号[两猿社],重点讲述了AES加密算法的加密模式和原理,用MATL ...

  4. 【加解密专辑】对接触到的PGP、RSA、AES加解密算法整理

    先贴代码,有空再整理思路 PGP加密 using System; using System.IO; using Org.BouncyCastle.Bcpg; using Org.BouncyCastl ...

  5. Aes 加解密算法

    public class AesHelper    {        /// <summary>        /// 生成128位的随机AES秘钥        /// </sum ...

  6. PHP完整的AES加解密算法使用及例子(256位)

    依赖PHP自身的mcrypt扩展 <?php class aes { // CRYPTO_CIPHER_BLOCK_SIZE 32 private $_secret_key = 'default ...

  7. C#与java中的AES加解密互解算法

    一.C#版AES加解密算法 public class AESCode { public string Key { get; set; } public string Encrypt(string va ...

  8. RSA,AES加解密算法的实现

    目录 Python实现RSA公钥加密算法 RSA公钥加密算法原理 RSA算法的Python实现 AES加解密算法实现 AES加解密算法原理 AES加解密算法Python实现 参考文献 Python实现 ...

  9. DES,AeS加解密,MD5,SHA加密

    1.DES一共就有4个参数参与运作:明文.密文.密钥.向量.其中这4者的关系可以理解为: 密文=明文+密钥+向量: 明文=密文-密钥-向量: 为什么要向量这个参数呢?因为如果有一篇文章,有几个词重复, ...

随机推荐

  1. BZOJ2141排队——树状数组套权值线段树(带修改的主席树)

    题目描述 排排坐,吃果果,生果甜嗦嗦,大家笑呵呵.你一个,我一个,大的分给你,小的留给我,吃完果果唱支歌,大家 乐和和.红星幼儿园的小朋友们排起了长长地队伍,准备吃果果.不过因为小朋友们的身高有所区别 ...

  2. hdu 6393 Traffic Network in Numazu (树链剖分+线段树 基环树)

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=6393 思路:n个点,n条边,也就是基环树..因为只有一个环,我们可以把这个环断开,建一个新的点n+1与之相 ...

  3. windows 系统无法安装

    1. 提示windows 无法安装到这个磁盘,选中的磁盘具有MBR分区表. Windows cannot be installed to this disk.the selected disk has ...

  4. 自学Linux Shell12.6-嵌套循环for命令

    点击返回 自学Linux命令行与Shell脚本之路 12.6-嵌套循环for命令 嵌套循环就是在一个循环中还有一个循环. 内部循环在外部循环体中,在外部循环的每次执行过程中都会触发内部循环,直到内部循 ...

  5. Java编程,打印昨天的当前时刻

    public class Demo {  /*  * Java编程,打印昨天的当前时刻  */ public static void main(String[] args){  Calendar ca ...

  6. [Cqoi2014]数三角形——组合数

    Description: 给定一个nxm的网格,请计算三点都在格点上的三角形共有多少个.下图为4x4的网格上的一个三角形. 注意三角形的三点不能共线. Hint: 1<=m,n<=1000 ...

  7. (转)Eclipse配置GitHub代码库(以Windows7为例)

    原文地址:http://blog.csdn.net/twlkyao/article/details/26340685 1.安装Git 首先安装git.这里只讲Windows环境下安装Git方法. 从G ...

  8. 简单认识python(一)

    最近本宝宝被一部小说迷的神魂颠倒的,在网络上四处找免费的小说资源,一直哭唧唧的等待着每天更新的一章.实在是太可怜了,本宝宝决定自己学python,自己抓包小说. 既然知道目的地了,那就和本宝宝一起打怪 ...

  9. spread与react

    我们写react组件的过程中会遇到这个 我们知道react中的{},浏览器会知道说是以js的形式进行解析出来.那么怎么解析...props呢? 这个就涉及到es6中的扩展运算符了,我们先看下面的一些运 ...

  10. 常用linux命令(项目部署)

    centos 图形 命令行 界面切换 如果在图形界面下,按:Ctrl+Alt+F2进入如下命令行界面 -------------- 看当前目录的路径: pwd ................... ...