文档章节

PHP利用AES对称加密

webphp
 webphp
发布于 2017/07/26 10:34
字数 221
阅读 32
收藏 0
<?php
 
class MagicCrypt{
    private $key = '';
    private $vi = '';
  
     public function encrypt($encryptStr) {
        $localIV = $this->vi;
        $encryptKey = $this->key;
        //Open module
        $module = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, $localIV);
        //print "module = $module <br/>" ;
        mcrypt_generic_init($module, $encryptKey, $localIV);
        //Padding
        $block = mcrypt_get_block_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC);
        $pad = $block - (strlen($encryptStr) % $block); //Compute how many characters need to pad
        $encryptStr .= str_repeat(chr($pad), $pad);
        // After pad, the str length must be equal to block or its integer multiples
        //encrypt
        $encrypted = mcrypt_generic($module, $encryptStr);
        //Close
        mcrypt_generic_deinit($module);
        mcrypt_module_close($module);
        //return base64_encode($encrypted);
        return bin2hex($encrypted);
    }
 
    /**
     * 解密
     * @param $encryptStr
     * @return string
     * @author Baip 125618036@qq.com
     */
    public function decrypt($encryptStr) {
        $localIV = $this->vi;
        $encryptKey = $this->key;
        //Open module
        $module = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, $localIV);
        //print "module = $module <br/>" ;
        mcrypt_generic_init($module, $encryptKey, $localIV);
        //$encryptedData = base64_decode($encryptStr);
        $encryptedData = hex2bin($encryptStr);
        $encryptedData = mdecrypt_generic($module, $encryptedData);
        return $encryptedData;
    }

   /**
     * AES加密
     * @param $encryptStr
     * @return string
     * @author Baip 125618036@qq.com
     */
    public function encrypt($encryptStr, $localIV, $encryptKey) {
        $encryptKey = substr(sha1($encryptKey),0,16);
        $encrypted = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $encryptKey, $encryptStr, MCRYPT_MODE_CBC, $localIV);
        return base64_encode($encrypted);
    }

    /**
     * 解密
     * @param $encryptStr
     * @return string
     * @author Baip 125618036@qq.com
     */
    public function decrypt($encryptStr, $localIV, $encryptKey) {
        $encryptKey = substr(sha1($encryptKey),0,16);
        $encryptedData = base64_decode($encryptStr);
        $decrypted = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $encryptKey, $encryptedData, MCRYPT_MODE_CBC, $localIV);
        return $decrypted;
    }

 
}

 

© 著作权归作者所有

共有 人打赏支持
上一篇: Express配置项说明
下一篇: PHP生成PPT文件
webphp
粉丝 1
博文 92
码字总数 92338
作品 0
海淀
程序员
私信 提问
app后端如何保证通讯安全--aes对称加密 

app后端如何保证通讯安全--aes对称加密 在上文《16.app后端如何保证通讯安全--url签名》提到,url签名有两个缺点,这两个缺点,如果使用对称加密方法的话,则完全可以避免这两个缺点。在本文...

法斗斗
2016/05/31
96
0
数据MD5+base64、AES+RSA加密原理

在服务器与终端设备进行HTTP通讯时,常常会被网络抓包、反编译(Android APK反编译工具)等技术得到HTTP通讯接口地址和参数。为了确保信息的安全,我们必须进行接口参数加密和解密。本文只讲...

朝雨晚风
2016/07/14
0
0
PHP常用的对称加密

加密算法的分类 1)不可逆加密算法 2)可逆加密算法 可逆加密算法又分为两大类:“对称式”和“非对称式”。 DES/AES是可逆对称的。 /** * 常用对称加密算法类 * 支持密钥:64/128/256 bit(...

xinson
2016/04/20
61
0
冬日/AesEncrypt

#AesEncrypt:Aes加密/解密示例项目   附件中的“AesEncrypt.zip”是本项目的exe文件,可直接下载下来运行和查看。   高级加密标准(英语:Advanced Encryption Standard,缩写:AES),...

冬日
2016/08/05
0
0
Java使用Hutool实现AES、DES加密解密

介绍 AES和DES同属对称加密算法,数据发信方将明文(原始数据)和加密密钥一起经过特殊加密算法处理后,使其变成复杂的加密密文发送出去。收信方收到密文后,若想解读原文,则需要使用加密用...

路小磊
2017/08/07
0
21

没有更多内容

加载失败,请刷新页面

加载更多

微信小程序 用canvas绘制的图插入到分享中

用canvas绘制图 createNewImg: function () {var that = this;var ctx = wx.createCanvasContext('mycanvas');ctx.setFillStyle("#F4F4F4");// context.setFillStyle("#fff")ctx.fillRe......

潇潇程序缘
3分钟前
0
0
公司报表数据库优化

报表系统优化 背景: 11.22早晨 刚放下背包,收到一份邮件,邮件意思是公司报表数据库慢,让我帮忙看看。邮件还附带了一个SQL文本,指出这个SQL慢。随后电话了开发人员了解事情来龙去脉,原来...

hnairdb
3分钟前
0
0
javascript代码技巧

1、var gt = window.showgt || (windows.showgt="abc");

gtandsn
7分钟前
0
0
TiDB EcoSystem Tools 原理解读(一):TiDB-Binlog 架构演进与实现原理

简介 TiDB-Binlog 组件用于收集 TiDB 的 binlog,并提供实时备份和同步功能。该组件在功能上类似于 MySQL 的主从复制,MySQL 的主从复制依赖于记录的 binlog 文件,TiDB-Binlog 组件也是如此...

TiDB
23分钟前
0
0
Confluence 6 文档主题合并问答

在 Confluence 官方 前期发布的消息 中,文档主题在 Confluence 6.0 及其后续版本中已经不可用。我们知道你可能对这个有很多好好奇的问题,因此我们在这里设置了一个问答用于帮助你将这个主题...

honeymose
26分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部