zoukankan      html  css  js  c++  java
  • mcrypt加密详解

      安装和使用php的mcrypt扩展

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

      其中,Mcrypt扩展库可以实现加密解密功能,就是既能将明文加密,也可以密文还原。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_MODE_来表示,如下面Mcrypt应用的例子:

      DES算法表示为MCRYPT_DES;

      ECB模式表示为MCRYPT_MODE_ECB;

      PHP加密扩展库Mcrypt应用

      先看一个例子,了解Mcrypt的工作流程,再来看看部分流程使用的函数:

      //加密内容  //密钥  //密码类型  //密码模式 
      $str = "hello";
      $key = "123";
      $cipher = MCRYPT_DES;
      $modes = MCRYPT_MODE_ECB;
      $iv = mcrypt_create_iv(mcrypt_get_iv_size($cipher,$modes),MCRYPT_RAND);//初始化向量 
      $str_encrypt = mcrypt_encrypt($cipher,$key,$str,$modes,$iv);  //加密函数 
      echo "加密密文:".$str_encrypt." "; 
      $str_decrypt = mcrypt_decrypt($cipher,$key,$str_encrypt,$modes,$iv);  //解密函数 
      echo "还原:".$str_decrypt; 

      运行结果:

      加密明文:hello

      加密密文: C|b�U�|@

      还原:hello

      <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必须一一对应,否则数据不能被还原。

      libmcrypt-2.5.8.tar.gz

      mhash-0.9.9.tar.gz

      mcrypt-2.6.8.tar.gz

      【几篇文章和在一起的,下面特别重视,但是我发现安装mcrypt时候需要解决对libmcrypt还有mhash的依赖,这些好解决,不行yum一下就可以了】

      现在你应该已经把libmcrypt作为一个共享组件了(但不是一个PHP的共享组件)。运行命令:

      # ldconfig

      它将使得共享对象可以在C/C++开发中被使用。下面把mcrypt动态组件编译到PHP中。首先,你需要PHP-devel 包中包含的 'phpize‘ 命令。

      当你当前运行的PHP中已经有了 PHP-devel 后,输入:

      # cd ext/mcrypt

      # phpize

      # aclocal

      # ./configure

      # make clean

      # make

      # make install

      现在php的安装目录下面应该有了mcrypt.so 的文件,在 /etc/php.ini 添加:

      extension=mcrypt.so

      然后重启一下,这样我们就已经将mcrypt功能安装成功了。

      特别注意:

      1、phpize需在解压后的源码包下执行,执行后生成configure脚本

      2、运行./configure时,如果提示

      configure: error: Cannot find php-config. Please use --with-php-config=PATH

      请使用:

      ./configure --with-php-config=/php-install-path/bin/php-config #而不是使用php.ini

  • 相关阅读:
    POJ 2752 Seek the Name, Seek the Fame
    POJ 2406 Power Strings
    KMP 算法总结
    SGU 275 To xor or not to xor
    hihocoder 1196 高斯消元.二
    hihoCoder 1195 高斯消元.一
    UvaLive 5026 Building Roads
    HDU 2196 computer
    Notions of Flow Networks and Flows
    C/C++代码中的笔误
  • 原文地址:https://www.cnblogs.com/thinksasa/p/2684660.html
Copyright © 2011-2022 走看看