文档章节

PHP利用AES对称加密

webphp
 webphp
发布于 2017/07/26 10:34
字数 221
阅读 15
收藏 0
点赞 0
评论 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;
    }

 
}

 

© 著作权归作者所有

共有 人打赏支持
webphp
粉丝 1
博文 91
码字总数 91650
作品 0
海淀
程序员
app后端如何保证通讯安全--aes对称加密 

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

法斗斗 ⋅ 2016/05/31 ⋅ 0

数据MD5+base64、AES+RSA加密原理

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

朝雨晚风 ⋅ 2016/07/14 ⋅ 0

PHP常用的对称加密

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

xinson ⋅ 2016/04/20 ⋅ 0

冬日/AesEncrypt

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

冬日 ⋅ 2016/08/05 ⋅ 0

服务端与客户端加密解密思路

服务端与客户端加密解密思路 我的参考 我的理解 我的参考 源码编码 文档思路 我的理解 AES 对称加密,即加密解密使用共同的key AES是DES的升级版 RSA 非对称加密,即加密解密使用一对不同的key...

Juzhang ⋅ 2015/07/23 ⋅ 0

AES算法介绍

对称密码算法主要用于保证数据的机密性,通信双方在加密/解密过程中使用它们共享的单一密钥。对称密码算法的使用相当广泛,密码学界已经对它们进行了深入的研究 。最常用的对称密码算法是数据加...

嗯哼9925 ⋅ 2017/12/15 ⋅ 0

无线路由AES与TKIP加密的区别

TKIP: Temporal Key Integrity Protocol(暂时密钥集成协议)负责处理无线安全问题的加密部分,TKIP是包裹在已有WEP密码外围的一层“外壳”, 这种加密方式在尽可能使用WEP算法的同时消除了...

任远 ⋅ 2011/02/10 ⋅ 0

DES加密、RC4加密、AES加密等加密算法的优势及应用

1篇文章,1部小说被盗取,全靠维(si)权(bi)捍卫自己的原创权利。程序员捍卫自己珍贵的代码,全靠花式的加密算法。代码加密有多重要?程序员半年做出的产品,盗版者可能半天就能完全破解。...

达斯雷马 ⋅ 2017/03/23 ⋅ 0

HTTPS 再爆漏洞, 企业需升级SSL/TLS加密算法

随着CBC和RC4加密算法的相继“沦陷”,依赖SSL/TLS的企业需要引起高度重视,选择更安全的加密算法。 本站之前的文章“你的智能手机应用在裸奔吗” 提到过, 糟糕的SSL实施可能会导致被实施“...

oschina ⋅ 2013/03/24 ⋅ 10

Java 对称加密

最近在做一个用户 token 功能,学习了加密相关 AES/DES、RSA 等。其中涉及一个对称和非对称加密问题。对称加密虽然没有非对称加密那样安全性高,但好处是加密速度快,但某些场合还是可以选择...

zhangxin09 ⋅ 2017/12/01 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

C++内存映射文件居然是这样?!

内存映射文件大家都时不时听过,但它到底是个什么?赶紧来看看吧 内存映射文件到底是干嘛的呢?让我们先来思考下面几个问题: 如果您想读的内容大于系统分配的内存块怎么办?如果您想搜索的字...

柳猫 ⋅ 30分钟前 ⋅ 0

MySQL 数据库设计总结

规则1:一般情况可以选择MyISAM存储引擎,如果需要事务支持必须使用InnoDB存储引擎。 注意:MyISAM存储引擎 B-tree索引有一个很大的限制:参与一个索引的所有字段的长度之和不能超过1000字节...

OSC_cnhwTY ⋅ 今天 ⋅ 0

多线程(四)

线程池和Exector框架 什么是线程池? 降低资源的消耗 提高响应速度,任务:T1创建线程时间,T2任务执行时间,T3线程销毁时间,线程池没有或者减少T1和T3 提高线程的可管理性。 线程池要做些什...

这很耳东先生 ⋅ 今天 ⋅ 0

使用SpringMVC的@Validated注解验证

1、SpringMVC验证@Validated的使用 第一步:编写国际化消息资源文件 编写国际化消息资源ValidatedMessage.properties文件主要是用来显示错误的消息定制 [java] view plain copy edit.userna...

瑟青豆 ⋅ 今天 ⋅ 0

19.压缩工具gzip bzip2 xz

6月22日任务 6.1 压缩打包介绍 6.2 gzip压缩工具 6.3 bzip2压缩工具 6.4 xz压缩工具 6.1 压缩打包介绍: linux中常见的一些压缩文件 .zip .gz .bz2 .xz .tar .gz .tar .bz2 .tar.xz 建立一些文...

王鑫linux ⋅ 今天 ⋅ 0

6. Shell 函数 和 定向输出

Shell 常用函数 简洁:目前没怎么在Shell 脚本中使用过函数,哈哈,不过,以后可能会用。就像java8的函数式编程,以后获取会用吧,行吧,那咱们简单的看一下具体的使用 Shell函数格式 linux ...

AHUSKY ⋅ 今天 ⋅ 0

单片机软件定时器

之前写了一个软件定时器,发现不够优化,和友好,现在重写了 soft_timer.h #ifndef _SOFT_TIMER_H_#define _SOFT_TIMER_H_#include "sys.h"typedef void (*timer_callback_function)(vo...

猎人嘻嘻哈哈的 ⋅ 今天 ⋅ 0

好的资料搜说引擎

鸠摩搜书 简介:鸠摩搜书是一个电子书搜索引擎。它汇集了多个网盘和电子书平台的资源,真所谓大而全。而且它还支持筛选txt,pdf,mobi,epub、azw3格式文件。还显示来自不同网站的资源。对了,...

乔三爷 ⋅ 今天 ⋅ 0

Debian下安装PostgreSQL的表分区插件pg_pathman

先安装基础的编译环境 apt-get install build-essential libssl1.0-dev libkrb5-dev 将pg的bin目录加入环境变量,主要是要使用 pg_config export PATH=$PATH:/usr/lib/postgresql/10/bin 进......

玛雅牛 ⋅ 今天 ⋅ 0

inno安装

#define MyAppName "HoldChipEngin" #define MyAppVersion "1.0" #define MyAppPublisher "Hold Chip, Inc." #define MyAppURL "http://www.holdchip.com/" #define MyAppExeName "HoldChipE......

backtrackx ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部