php aes加解密,mcrypt_encrypt 和openssl_encrypt
php7.1以下版本使用
/*
* mcrypt_encrypt 加密
* php7.1开始被丢弃 可以使用openssl_encrypt
* */
function aes_encrypt($content){
$privateKey = "abcdef1234567890";
$iv = "helloworld123456";
$content = $this->pkcs7_pad($content); //支持openssl_decrypt 解密,
$encrypted = mcrypt_encrypt(MCRYPT_RIJNDAEL_128,$privateKey,$content,MCRYPT_MODE_CBC,$iv);
$based_encrypted = base64_encode($encrypted);
return $based_encrypted;
}
/*
* mcrypt_encrypt 解密
* */
function aes_decrypt($content){
$privateKey = "abcdef1234567890";
$iv = "helloworld123456";
$content = base64_decode($content);
$encrypted = mcrypt_decrypt(MCRYPT_RIJNDAEL_128,$privateKey,$content,MCRYPT_MODE_CBC,$iv);
return $encrypted;
}
function pkcs7_pad($str){
$len = mb_strlen($str, '8bit');
$c = 16 - ($len % 16);
$str .= str_repeat(chr($c), $c);
return $str;
}
php7.1开始被丢弃 可以使用openssl_encrypt
/**
* 解密字符串
* @param string $data 字符串
* @param string $key 加密key
* @return string
*/
function decryptWithOpenssl($data,$key,$iv){
return openssl_decrypt(base64_decode($data),"AES-128-CBC",$key,OPENSSL_RAW_DATA,$iv);
} /**
* 加密字符串
* 参考网站: https://segmentfault.com/q/1010000009624263
* @param string $data 字符串
* @param string $key 加密key
* @return string
*/
function encryptWithOpenssl($data,$key,$iv){
return base64_encode(openssl_encrypt($data,"AES-128-CBC",$key,OPENSSL_RAW_DATA,$iv));
}
使用方法
header("Content-type:text/html; charset=utf-8");
$privateKey = "abcdef1234567890";
$iv = "helloworld123456";
echo "<pre>";
$content = '章节内容加密测试121212ksjflkdjslfsdjfljs章节内容测试end';
$aesencrypt = aes_encrypt($content);
echo "aes_encrypt加密:".($aesencrypt);
echo "<br/>";
$encrypt_openssl = aes_decrypt($aesencrypt);
echo "aes_decrypt解密:".($encrypt_openssl);
echo "<br/>";
$encrypt_openssl = decryptWithOpenssl($aesencrypt,$privateKey,$iv);
echo "openssl_encrypt解密:".($encrypt_openssl);
echo "<br/>";
$encrypt_openssl = encryptWithOpenssl($content,$privateKey,$iv);
echo "openssl_encrypt加密:".($encrypt_openssl);
echo "<br/>";
$decrypt_openssl =decryptWithOpenssl($encrypt_openssl,$privateKey,$iv);
echo "openssl_encrypt解密:".($decrypt_openssl);
echo "<br/>";
$decrypt_openssl = aes_decrypt($encrypt_openssl);
echo "aes_decrypt解密:".($decrypt_openssl);
echo "<br/>";
php aes加解密,mcrypt_encrypt 和openssl_encrypt的更多相关文章
- Aes加解密,php
Aes类库 <?php namespace Aes; class Aes { /** * var string $method 加解密方法,可通过openssl_get_cipher_metho ...
- AES加解密算法
直接粘代码,该类是基于微信公众号消息加密解密所提供的PHP DEMO改造而来,目前使用于彬彬大学APP接口token校验中. php的mcrypt 扩展已经过时了大约10年,并且用起来很复杂.因此它被 ...
- DES,AeS加解密,MD5,SHA加密
1.DES一共就有4个参数参与运作:明文.密文.密钥.向量.其中这4者的关系可以理解为: 密文=明文+密钥+向量: 明文=密文-密钥-向量: 为什么要向量这个参数呢?因为如果有一篇文章,有几个词重复, ...
- c# Aes加解密和对象序列化
aes加解密 public class AesCryptto { private string key = "hjyf57468jhmuist"; private string i ...
- Java、C#双语版配套AES加解密示例
这年头找个正经能用的东西那是真难,网上一搜索一大堆,正经能用的没几个,得,最后还是得靠自己,正巧遇上需要AES加解密的地方了,而且还是Java和C#间的相互加解密操作,这里做个备忘 这里采用的加解 ...
- AES加解密算法Qt实现
[声明] (1) 本文源码 在一位未署名网友源码基础上,利用Qt编程,实现了AES加解密算法,并添加了文件加解密功能.在此表示感谢!该源码仅供学习交流,请勿用于商业目的. (2) 图片及描述 除图1外 ...
- aes加解密 Illegal key size
做aes加密时,发生一个奇怪的错误,在本地环境是好的,发布到测试环境就出问题, java.security.InvalidKeyException: Illegal key size 想到本地环境之前 ...
- C# RSA加解密与验签,AES加解密,以及与JAVA平台的密文加解密
前言: RSA算法是利用公钥与密钥对数据进行加密验证的一种算法.一般是拿私钥对数据进行签名,公钥发给友商,将数据及签名一同发给友商,友商利用公钥对签名进行验证.也可以使用公钥对数据加密,然后用私钥对数 ...
- cryptoJS AES 加解密简单使用
简单记录一下,前端利用 cryptoJS 如何加解密的.主要是关于 AES 加解密. 需求描述:需要对 url 中的参数进行 AES 解密,然后再把该参数进行 MD5 加密通过接口传递. AES AE ...
- AES加解密程序的实现
AES加解密程序的实现正常情况,用户不能访问sys.dbms_crypto,需要DBA授权:grant execute on dbms_crypto to crm;建立加解密的PKG_AES包:CRE ...
随机推荐
- BZOJ 4388 [JOI2012春季合宿]Invitation (线段树、二叉堆、最小生成树)
题目链接 https://www.lydsy.com/JudgeOnline/problem.php?id=4388 题解 模拟Prim算法? 原题所述的过程就是Prim算法求最大生成树的过程.于是我 ...
- git commit -m "XX"报错 pre -commit hook failed (add --no-verify to bypass)问题
在同步本地文件到线上仓库的时候 报错 pre -commit hook failed (add --no-verify to bypass) 当你在终端输入git commit -m "xx ...
- iOS 修改打包后的.ipa应用名字
一.修改应用的名字 二.重新签名 下面详细介绍介绍两个步骤: 1.修改应用的名字: 1).解压.ipa文件,在Payload文件夹下有一个.app文件(如下图:)选中.app文件,右键点击“显示包内容 ...
- router 配置按需加载对应的组件,配置active
const routes = [ { path: '/', component: App, children: [ {path: '/index/:type', name: 'index', comp ...
- linux用户和组账户管理
linux操作系统是一个多用户操作系统,它允许多用户同时登录到系统上并使用资源.系统会根据账户来区分每个用户的文件,进程,任务和工作环境,使得每个用户工作都不受干扰. 用户账户 A.普通用户账户:普通 ...
- Dropdown 下拉菜单
将动作或菜单折叠到下拉菜单中. 基础用法 移动到下拉菜单上,展开更多操作. 通过组件slot来设置下拉触发的元素以及需要通过具名slot为dropdown 来设置下拉菜单.默认情况下,下拉按钮只要ho ...
- 什么叫DMZ区?DMZ区有什么作用?应该怎样构建DMZ
您的公司有一堆电脑,但可以归为两大类:客户机.服务器.所谓客户机就是主动发起连接请求的机器,所谓服务器就是被动响应提供某些服务的机器.服务器又可以分仅供企业内网使用和为外网提供服务两种. 所以,如果把 ...
- Ubunut16.04 安装 Theano+GPU
1. 更新NVIDIA显卡驱动 安装好系统之后首先在系统更新管理器中更新显卡驱动,如下图 点击Apply Changes 2. 安装numpy,scipy,theano pip安装即可 sudo ...
- Excel不同版本差异性
apache poi-3.16.jar /* ==================================================================== Licensed ...
- CSS练习-导航栏斜线分隔-利用伪元素
开始切第一张图了,第一个遇到的问题是顶部导航栏这里,用斜线分割.想到的思路是用伪类:before或者:after实现 先写html结构. <!-- 导航栏begin --> <div ...