mcrypt php 加密解密,mcrypt启用 加密以及解密过程详细解析
Mcrypt扩展库可以实现加密解密功能,就是既能将明文加密,也可以密文还原。
1.PHP加密扩展库Mcrypt安装在标准的PHP安装过程中并没有把Mrcypt安装上,但PHP的主目录下包含了libmcrypt.dll和libmhash.dll文件 (libmhash.dll是Mhash扩展库,这里可以一起装上)。首先,将这两个文件复制到系统目录windows\system32下,然后在 PHP.ini文件中按Ctrl+F快捷键跳出查找框,并找到;extension=php-mcrypt.dll和; extension=php_mhash.dll这两个语句,接着将前面的“;”去掉;最后,保存并重启Apache服务器即可生效。
2.PHP加密扩展库Mcrypt的算法和加密模式Mcrypt库支持20多种加密算法和8种加密模式,具体可以通过函数mcrypt_list_algorithms()和mcrypt_list_modes()来显示,结果如下:
Mcrypt支持的算法有:cast-128 gost rijndael-128 twofish arcfour cast-256 loki97 rijndael-192 saferplus wake blowfish-compat des rijndael-256 serpent xtea blowfish enigma rc2 tripledes
Mcrypt支持的加密模式有:cbc cfb ctr ecb ncfb nofb ofb stream
这些算法和模式在应用中要以常量来表示,写的时候加上前缀MCRYPT_和MCRYPT_来表示,如下面Mcrypt应用的例子:
DES算法表示为MCRYPT_DES;
ECB模式表示为MCRYPT_MODE_ECB;
3.PHP加密扩展库Mcrypt应用先看一个例子,了解Mcrypt的工作流程,再来看看部分流程使用的函数:
$str = "我是李云";
$key = "123qwe.019860905061X";
$cipher = MCRYPT_RIJNDAEL_128;
$mode = MCRYPT_MODE_ECB;
$iv = mcrypt_create_iv(mcrypt_get_iv_size($cipher,$mode),MCRYPT_RAND);
echo "原文:".$str."
";
$str_encrypt = mcrypt_encrypt($cipher,$key,$str,$mode,$iv);
echo "加密后的内容是:".$str_encrypt."
";
$str_decrypt = mcrypt_decrypt($cipher,$key,$str_encrypt,$mode,$iv);
echo "解密后的内容:".$str_decrypt."
";
运行结果:
原文:我是李云
加密后的内容是:B@鴹�=(I辩蝣Z%
解密后的内容:我是李云
<1>由例子中可看到,使用PHP加密扩展库Mcrypt对数据加密和解密之前,首先创建了一个初始化向量,简称为iv。由 $iv = mcrypt_create_iv(mcrypt_get_iv_size($cipher,$modes),MCRYPT_RAND);可见创建初始化 向 量需要两个参数:size指定了iv的大小;source为iv的源,其中值MCRYPT_RAND为系统随机数。
<2>函数mcrypt_get_iv_size($cipher,$modes)返回初始化向量大小,参数cipher和mode分别指算法和加 密模式。
<3>加密函数$str_encrypt = mcrypt_encrypt($cipher,$key,$str,$modes,$iv); 该函数的5个参数分 别如下:cipher——加密算法、key——密钥、data(str)——需要加密的数据、mode——算法模式、 iv——初始化向量
<4>解密函数 mcrypt_decrypt($cipher,$key,$str_encrypt,$modes,$iv); 该函数和加密函数的参数几乎 一样,唯一不同的是data,也就是说data为需要解密的数据$str_encrypt,而不是原始数据$str。
//手册里的写法:
//指定初始化向量iv的大小:
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
//创建初始化向量:
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
//加密密码:
$key = "123qwe.019860905061x";
//原始内容(未加密):
$text = "My name is Adam Li!";
echo $text. "
\n";
//加密后的内容:
$crypttext = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $text, MCRYPT_MODE_ECB, $iv);
echo $crypttext. "\n
";
//解密已经加密的内容:
$str_decrypt = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $crypttext, MCRYPT_MODE_ECB, $iv);
echo $str_decrypt;
下面是一个加/解密请求的例子:
$request_params = array(
'controller' => 'todo',
'action' => 'read',
'username' => "bl",
'userpass' => "a1"
);
$private_key = "28e336ac6c9423d946ba02d19c6a2632";
//encrypt request
$enc_request = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $private_key, json_encode($request_params), MCRYPT_MODE_ECB));
echo "CRYPT:".$enc_request."
";
//decrypt request
$params = json_decode(trim(mcrypt_decrypt( MCRYPT_RIJNDAEL_256, $private_key, base64_decode($enc_request), MCRYPT_MODE_ECB )),true);
echo "ENCRYPT:
";
//print result
var_dump($params);
注:加密和解密函数中的参数cipher、key和mode必须一一对应,否则数据不能被还原。
mcrypt php 加密解密,mcrypt启用 加密以及解密过程详细解析相关推荐
- php mcrypt aes,简单的PHP加密/解密(Mcrypt,AES)
我正在寻找使用Mcrypt的简单但加密强大的AES实现AES. 希望将其归结为一对简单的函数,$garble = encrypt($key,$payload)和$payload = decrypt($ ...
- [转] PHP之加解密: Mcrypt函数
转载自: http://hi.baidu.com/ifuliaoyou/blog/item/f870570f22e13cec36d1220e.html PHP中自带了相当多的加密的方法,这里我们来看一 ...
- mcrypt java_使用openssl解密mcrypt
由于mcrypt被认为是过时的,我的任务是升级当前代码以使用openssl . 听起来很简单,但......经过几天的尝试和失败后,我觉得自己很疯狂 . 我的问题是:你有什么方法可以用之前用mcryp ...
- php 破解加密帖子,某PHP加密文件解密过程初探 · 浮萍’s Blog
最近在52PJ上看到一篇关于PHP加密解密的帖子,过程非常详细,而且作者很负责,对于别人的回答也很热心.跟着动手做了一下,记录一下遇到的问题.这里针对的是PHP加密网站的免费加密进行的调试. 采用的I ...
- 某段\x 16进制和unicode加密与混淆js代码的解密与反加密
某天,在鼓捣一个ems系统,想用来做成新闻资讯类网站.弄了好多天,各个框架和结构都差不多了,重新调整了结构,一个偶然的机会,发现搜索框点击的时候不能自动清空先前的内容,于是想添加一段js代码去修改,找 ...
- [转载]MaxtoCode对.Net程序加密的原理及解密探讨三(实例解密)
标 题: [原创]MaxtoCode对.Net程序加密的原理及解密探讨三(实例解密) 作 者: rick 时 间: 2006-09-29,23:16:28 链 接: http://bbs.pediy. ...
- linux密码加密文件,Linux下加密/解密及用密码保护文件的七把利器
加密是指对文件进行编码的过程,那样只有有权访问的人才可以访问文件.人类早在计算机还没有问世的时候就开始使用加密了.战争期间,人类会传输只有其部落或相关人员才能理解的某种信息. 作者:布加迪/编译来源: ...
- 对称加密----AES和DES加密、解密
目前主流的加密方式有:(对称加密)AES.DES (非对称加密)RSA.DSA 调用AES/DES加密算法包最精要的就是下面两句话: Cipher cipher = Cipher.get ...
- 报文加解密原理_加密系统的组成与过程
加密系统的组成与过程 来源:超时代软件 更新时间:2018年11月28日 18:16:55 数据库透明加密就是把数据信息即明文转换为不可辨识的形式即密文的过程,目的是使不应了解该数据信息的人不 ...
最新文章
- tcl c语言笔试题,TCL技术类笔试题目.doc
- 安卓 发送短信两种方式
- python的翻译-用python实现百度翻译的示例代码
- iframe 父窗口和子窗口相互的调用方法集锦
- Leetcode 144. 二叉树的前序遍历 (每日一题 20210820)
- 【数据库复习】第一章绪论
- 匿名电子病例信息不全?深度学习能更好的判断出种族(代码开源)
- python16进制转2进制流_将十六进制文件转换为二进制文件
- C/C++函数调用的几种方式总结
- 第零讲.1 tapestry项目创建与运行
- String 字符串去除特殊字符和空格,正则表达式使用,%1$s
- CentOS开启samba服(附smb.conf手册)
- 观点:比特币新一轮突破“即将到来”
- 基于visual Studio2013解决面试题之1401冒泡排序
- 数据是否服从正态分布
- 循道 | 富达投资的技术控为何摇身变成资管掌门人
- STM32F205 HAL库 RTC软件复位后不准
- HTML - 调用腾讯 QQ 进行客服在线聊天(PC)
- 数据结构之线性表(顺序表、链表、栈、队列)
- php 恶意上传,如何防止恶意文件上传到我的服务器上?(检查文件类型)?
热门文章
- 用Castor 处理XML文档
- 用Project软件编制项目计划【总结】
- 163-C++学习第十三弹(纯虚函数,模板,唯一性智能指针)
- 用python3实现的六壬栻盘程序
- 软件工程实验报告四软件总体设计及文档编写
- 2023郑州大学电子信息(控制工程)专硕考研成功经验分享
- Cordova官方插件 -- Vibration、Media、NativeAudio
- EndNote的学习
- Apache2.2.8 + svn-1.4.6安装配置实录
- std::function 的性能陷进