PHP程序员们在编写代码程序时,除了要保证代码的高性能之外,还有一点是非常重要的,那就是程序的安全性保障。PHP除了自带的几种加密函数外,还有功能更全面的PHP加密扩展库Mcrypt和Mhash。

其中,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 = "key:111";   //密钥
$cipher = MCRYPT_DES;  //密码类型
$modes = MCRYPT_MODE_ECB;  //密码模式
$iv = mcrypt_create_iv(mcrypt_get_iv_size($cipher,$modes),MCRYPT_RAND);//初始化向量
echo "加密明文:".$str."<p>";
$str_encrypt = mcrypt_encrypt($cipher,$key,$str,$modes,$iv);  //加密函数
echo "加密密文:".$str_encrypt." <p>";
$str_decrypt = mcrypt_decrypt($cipher,$key,$str_encrypt,$modes,$iv); //解密函数
echo "还原:".$str_decrypt;

运行结果:

加密明文:我的名字是?一般人我不告诉他!
加密密文: 锍盌?]鸴?q攦軄L 笑 郺葄"簻 黙
还原:我的名字是?一般人我不告诉他!

<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。

注:加密和解密函数中的参数cipher、key和mode必须一一对应,否则数据不能被还原
--------------------- 
原文:https://blog.csdn.net/zc2087/article/details/5129904

PHP加密扩展库Mcrypt相关推荐

  1. 加密扩展库+php,PHP加密扩展库—Mcrypt扩展库

    在本文开始正文开始之前,我们先来了解一下什么是PHP加密扩展库:PHP中不但几种加密函数(md5,crypt,sha1),在此之外,PHP中还有一些功能比较全面的加密扩展库!就好比php本来不支持操作 ...

  2. php mhash,PHP加密扩展库-Mhash扩展库实例用法详解

    PHP加密扩展库-Mhash扩展库 什么是Mhash扩展库:Mhash是基于离散数学原理的不可逆向的php加密方式扩展库,其在默认情况下不开启.mhash的可以用于创建校验数值,消息摘要,消息认证码, ...

  3. 加密扩展库 php,如何利Mcrypt扩展库进行加密和解密_php

    综述:Mcrypt 2.4.7是一个功能强大的加密算法扩展库,它包括有22种算法,其中就包括下面的几种算法: Blowfish RC2 Safer-sk64 xtea Cast-256 RC4 Saf ...

  4. mcrypt拓展_mcrypt 加密扩展

    mcrypt简单介绍 PHP程序员们在编写代码程序时,除了要保证代码的高性能之外,还有一点是非常重要的,那就是程序的安全性保障.PHP除了自带的几种加密函数外,还有功能更全面的PHP加密扩展库Mcry ...

  5. mcrypt php 加密解密,PHP mcrypt启用、加密以及解密过程详解

    Mcrypt扩展库可以实现加密解密功能,就是既能将明文加密,也可以密文还原. 1.安装PHP加密扩展Mcrypt 要使用该扩展,必须首先安装mcrypt标准类库,注意的是mcrypt软件依赖libmc ...

  6. php扩展库加密如何解密,如何利用Mcrypt扩展库进行加密和解密_PHP教程

    综述:Mcrypt 2.4.7是一个功能强大的加密算法扩展库,它包括有22种算法,其中就包括下面的几种算法: 以下为引用的内容: Blowfish RC2 Safer-sk64 xtea Cast-2 ...

  7. mcrypt拓展_PHP mcrypt加密扩展使用总结

    在开发中,很多时候我们在前后端交互中需要对一些敏感数据进行一定的加密.PHP中有提供了mcrypt的这样一个加密扩展实现对数据的加密解密. 一.mcrypt扩展的安装 在低版本的PHP中需要在配置文件 ...

  8. SEAL全同态加密开源库(七) rns剩余数系统-源码解析

    SEAL全同态加密开源库(七) rns剩余数系统-源码解析 2021SC@SDUSC 2021-11-14 前言 这是SEAL开源库代码分析报告第六篇,本篇将分析util文件夹中的rns.h和rns. ...

  9. SEAL全同态加密开源库(八) rns源码解析(2)

    SEAL全同态加密开源库(七) rns剩余数系统-源码解析 2021SC@SDUSC 2021-11-21 前言 这是SEAL开源库代码分析报告第七篇,本篇将继续分析util文件夹中的rns.h和rn ...

  10. PHP开发-知识积累-tonyenc-一款简洁、高性能、跨平台的 PHP7 代码加密扩展

    GitHub地址: https://github.com/lihancong/tonyenc 介绍 一个简洁.高性能.跨平台的 PHP7 代码加密扩展,当前版本为 0.2.2 特点 简单快速,经实测, ...

最新文章

  1. Discuz x3论坛使用CDN后获取真实IP的解决方法
  2. class function,delphi静态函数的对象基址分析static
  3. php如何实现用户报警,php封装实现钉钉机器人报警接口的示例代码
  4. c语言循环程序设计教案,10 《C语言程序设计》教案 第三章 程序的控制结构(6)—循环结构 while和do while.doc...
  5. (转)结婚那天,妈问我:坐在角落里象两个要饭模样的人是谁?
  6. matlab数字图像处理课程设计报告,数字图像处理课程设计实验报告.doc
  7. 【软考高项】信息系统项目管理师 论文写作技巧分享 (上)
  8. Android开发:5-2、ListView、GridView、Spinner
  9. dj电商-模型类设计-1.x-模型类抽象基类
  10. POI Excel 合并数据相同的行
  11. pydev中使用wxpython找不到路径的问题
  12. DOM 精简知识教程
  13. 有无3C认证的电源价格差别说明什么?
  14. mysql站内搜索_纯php+mysql打造的站内搜索
  15. 批处理bat命令快速截图
  16. vjc机器人灰度怎么编程_VJC1.5仿真版说明
  17. 一个模拟抛硬币的游戏
  18. 逆向分析CRACKME 第一章 Acid burn
  19. JS 今天/明天的日期
  20. 2020cpu天梯图

热门文章

  1. boost.asio网络错误码
  2. 成功长青——不读此书,愧为人徒,不读此书,愧为人师
  3. Online Safe Trajectory Generation For QuadrotorsUsing Fast Marching Method and Bernstein Basis Polyn
  4. github的crx快速下载
  5. chrome安装crx文件
  6. Office2016装Mathtype找不到WLL
  7. printf 和 puts
  8. Lack of free swap space on
  9. ie8对fixed的支持较差
  10. 岛屿周长c语言,[IOI2008]Island 岛屿