AES加解密算法
<?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加解密算法的更多相关文章
- AES加解密算法Qt实现
[声明] (1) 本文源码 在一位未署名网友源码基础上,利用Qt编程,实现了AES加解密算法,并添加了文件加解密功能.在此表示感谢!该源码仅供学习交流,请勿用于商业目的. (2) 图片及描述 除图1外 ...
- AES加解密算法在Android中的应用及Android4.2以上版本调用问题
from://http://blog.csdn.net/xinzheng_wang/article/details/9159969 AES加解密算法在Android中的应用及Android4.2以上 ...
- 最强加密算法?AES加解密算法Matlab和Verilog实现
目录 背景 AES加密的几种模式 基本运算 AES加密原理 Matlab实现 Verilog实现 Testbench 此本文首发于公众号[两猿社],重点讲述了AES加密算法的加密模式和原理,用MATL ...
- 【加解密专辑】对接触到的PGP、RSA、AES加解密算法整理
先贴代码,有空再整理思路 PGP加密 using System; using System.IO; using Org.BouncyCastle.Bcpg; using Org.BouncyCastl ...
- Aes 加解密算法
public class AesHelper { /// <summary> /// 生成128位的随机AES秘钥 /// </sum ...
- PHP完整的AES加解密算法使用及例子(256位)
依赖PHP自身的mcrypt扩展 <?php class aes { // CRYPTO_CIPHER_BLOCK_SIZE 32 private $_secret_key = 'default ...
- C#与java中的AES加解密互解算法
一.C#版AES加解密算法 public class AESCode { public string Key { get; set; } public string Encrypt(string va ...
- RSA,AES加解密算法的实现
目录 Python实现RSA公钥加密算法 RSA公钥加密算法原理 RSA算法的Python实现 AES加解密算法实现 AES加解密算法原理 AES加解密算法Python实现 参考文献 Python实现 ...
- DES,AeS加解密,MD5,SHA加密
1.DES一共就有4个参数参与运作:明文.密文.密钥.向量.其中这4者的关系可以理解为: 密文=明文+密钥+向量: 明文=密文-密钥-向量: 为什么要向量这个参数呢?因为如果有一篇文章,有几个词重复, ...
随机推荐
- selenium之封装登陆操作
# selenium 封装登录操作举例 import os, time # from selenium import webdriver class LoginPage(): '''登录模块''' d ...
- C++拷贝构造函数与 = 重载
调用拷贝构造函数进行初始化的时候,是不会调用=重载的. // test.cpp : 定义控制台应用程序的入口点. // //#include "stdafx.h" #include ...
- BZOJ1146[CTSC2008]网络管理——出栈入栈序+树状数组套主席树
题目描述 M公司是一个非常庞大的跨国公司,在许多国家都设有它的下属分支机构或部门.为了让分布在世界各地的N个 部门之间协同工作,公司搭建了一个连接整个公司的通信网络.该网络的结构由N个路由器和N-1条 ...
- BZOJ5252 八省联考2018林克卡特树(动态规划+wqs二分)
假设已经linkcut完了树,答案显然是树的直径.那么考虑这条直径在原树中是怎样的.容易想到其是由原树中恰好k+1条点不相交的链(包括单个点)拼接而成的.因为这样的链显然可以通过linkcut拼接起来 ...
- Codeforces Round #337 (Div. 2) B. Vika and Squares
B. Vika and Squares time limit per test 2 seconds memory limit per test 256 megabytes input standard ...
- MT【56】2017联赛一试解答最后一题:一道复数题的几何意义
- BZOJ 3622 : 已经没有什么好害怕的了(dp + 广义容斥原理)
今天没听懂 h10 的讲课 但已经没有什么好害怕的了 题意 给你两个序列 \(a,b\) 每个序列共 \(n\) 个数 , 数之间两两不同 问 \(a\) 与 \(b\) 之间有多少配对方案 使得 \ ...
- 自学Linux Shell12.3-case命令
点击返回 自学Linux命令行与Shell脚本之路 12.3-case命令 有了case命令,就不需要写出所有elif语句来不停的检查同一个变量的值了.case命令会采用列表格式来检查单个变量的多个值 ...
- [luogu1912][bzoj4196][NOI2015]软件管理器
题解 树剖模板题,每次改变是\(1\)或者是\(0\),区间求和和区间修改就可了. ac代码 # include <cstdio> # include <cstring> # ...
- SharePoint 错误集 2
1 Run command “New-SPConfigurationDatabase" Feature Description: error message popup after run ...