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. typedef简化

    /*** mystrcat: ***/ #include<stdio.h> #include<string.h> char *mystrcat(char *s1,char *s ...

  2. spring cloud stream整合

    spring cloud stream整体架构核心概念图: 图一:消息的发送端和接收端可以是不同的中间件 图二: 图三:在消息的发送之前和消息的接收端套了一层管道 @Output:输出注释,用于定义发 ...

  3. vuex和localStorage的存储区别

    vuex中的数据是存储在内存中的,localStorage中的数据是存储在浏览器的application中的

  4. Java从string数组创建临时文件

    //从string数组创建临时文件 private static File createSampleFile(String[] strs) throws IOException { File file ...

  5. legend3---5、lavarel爬坑杂记

    legend3---5.lavarel爬坑杂记 一.总结 一句话总结: 边做边学,变学边做,可能会节约很多时间,熟悉的就跳着看,不熟悉的就慢慢看 1.如何tags表中的主键是t_id而非id,如何使用 ...

  6. koa 基础(五)动态路由的传值

    1.动态路由的传值 app.js /** * 动态路由的传值 */ // 引入模块 const Koa = require('koa'); const router = require('koa-ro ...

  7. leetcode-hard-ListNode-23. Merge k Sorted Lists

    mycode   91.2% # Definition for singly-linked list. # class ListNode(object): # def __init__(self, x ...

  8. python正则表达式解析(re)

    正则表达式的使用方法主要有4种: re.search(进行正则匹配), re.match(从头开始匹配)  re.findall(找出所有符合条件的字符列表)  re.split(根据条件进行切分)  ...

  9. Mac下搭建Vue开发环境

    认知: 注:上面的图片转自Vue2.0 新手入门 — 从环境搭建到发布 1.安装brew 打开终端运行以下命令: /usr/bin/ruby -e "$(curl -fsSL https:/ ...

  10. sklearn4_混合分类器

    python机器学习-乳腺癌细胞挖掘(博主亲自录制视频) https://study.163.com/course/introduction.htm?courseId=1005269003&u ...