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的更多相关文章

  1. Aes加解密,php

    Aes类库 <?php namespace Aes; class Aes { /** * var string $method 加解密方法,可通过openssl_get_cipher_metho ...

  2. AES加解密算法

    直接粘代码,该类是基于微信公众号消息加密解密所提供的PHP DEMO改造而来,目前使用于彬彬大学APP接口token校验中. php的mcrypt 扩展已经过时了大约10年,并且用起来很复杂.因此它被 ...

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

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

  4. c# Aes加解密和对象序列化

    aes加解密 public class AesCryptto { private string key = "hjyf57468jhmuist"; private string i ...

  5. Java、C#双语版配套AES加解密示例

      这年头找个正经能用的东西那是真难,网上一搜索一大堆,正经能用的没几个,得,最后还是得靠自己,正巧遇上需要AES加解密的地方了,而且还是Java和C#间的相互加解密操作,这里做个备忘 这里采用的加解 ...

  6. AES加解密算法Qt实现

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

  7. aes加解密 Illegal key size

    做aes加密时,发生一个奇怪的错误,在本地环境是好的,发布到测试环境就出问题, java.security.InvalidKeyException: Illegal key size 想到本地环境之前 ...

  8. C# RSA加解密与验签,AES加解密,以及与JAVA平台的密文加解密

    前言: RSA算法是利用公钥与密钥对数据进行加密验证的一种算法.一般是拿私钥对数据进行签名,公钥发给友商,将数据及签名一同发给友商,友商利用公钥对签名进行验证.也可以使用公钥对数据加密,然后用私钥对数 ...

  9. cryptoJS AES 加解密简单使用

    简单记录一下,前端利用 cryptoJS 如何加解密的.主要是关于 AES 加解密. 需求描述:需要对 url 中的参数进行 AES 解密,然后再把该参数进行 MD5 加密通过接口传递. AES AE ...

  10. AES加解密程序的实现

    AES加解密程序的实现正常情况,用户不能访问sys.dbms_crypto,需要DBA授权:grant execute on dbms_crypto to crm;建立加解密的PKG_AES包:CRE ...

随机推荐

  1. AtCoder AGC005E Sugigma: The Showdown (博弈论)

    题目链接 https://atcoder.jp/contests/agc005/tasks/agc005_e 题解 完了真的啥都不会了-- 首先,显然如果某条A树的边对应B树上的距离大于等于\(3\) ...

  2. CodeForces 724C Ray Tracing(碰撞类,扩展gcd)

    又一次遇到了碰撞类的题目,还是扩展gcd和同余模方程.上次博客的链接在这:http://www.cnblogs.com/zzyDS/p/5874440.html. 现在干脆解同余模直接按照套路来吧,如 ...

  3. 给string定义一个扩展方法

    创建一个 static 的类,并且里面的方法也必须是static的,第一个参数是被扩展的对象,必须标注为this,使用时,必须保证namespace using进来了. 实例: using Syste ...

  4. 0.JQuery安装

    jQuery 安装 网页中添加 jQuery 可以通过多种方法在网页中添加 jQuery. 您可以使用以下方法: 从 jquery.com 下载 jQuery 库 从 CDN 中载入 jQuery, ...

  5. webservice代码编写主要包括服务器端发布和客户端调用。

    一.java工程发布,java工程调用   (一).服务器端的编写 1.在eclipse里新建java project工程,创建功能类,通过关键字@webservice(name="newI ...

  6. 宝塔linux面板,phpmyadmin进不去的处理方法

    1.检查宝塔面板是否开始phpmyadmin是否开启 2.打开阿里云安全组,添加888/888端口

  7. mysq乱码问题

    不乱码的思想 liunx字符集→linux客户端字符集(例如:ssh)→mysql客户端字符集→mysql服务端字符集→库的字符集→表的字符集→程序字符集统一 mysql表跟库,库跟服务端字符集 li ...

  8. YJango的卷积神经网络——介绍

    原文地址:https://zhuanlan.zhihu.com/p/27642620 如果要提出一个新的神经网络结构,首先就需要引入像循环神经网络中“时间共享”这样的先验知识,降低学习所需要的训练数据 ...

  9. Unix介绍

    1965年,AT&T贝尔电话实验室.通用电气公司.麻省理工学院MAC课题组一起联合开发一个称为Multics的新操作系统.该项目目的是让大型主机可以同时提供300台以上的终端机连接使用.其被设 ...

  10. mybatis-config.xml 和 mapper基本设置

    mybatis-config.xml : <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE ...