PHP中的Mcrypt函数库应用

原创 2004年08月28日 23:07:00

Mcrypt的4种块密码模式是:

·Electronic CodeBook(ECB,电子码证书):该模式用来加密短小无序的数据,例如键;
·Cipher Block Chaining(CBC,密码块链):该模式的安全级别要比ECB高;
·Cipher FeedBack(CFB,密码反馈):该模式用于为字节流按字节加密;
·Output FeedBack(OFB,输出反馈):该模式与CFB模式想类似,但是它可以用于无法容忍错误繁殖问题的应用程序,该模式以8位方式运行,已被证明是不安全的


如果是最新版本的Mcrypt函数库,那么Mcrypt也可以用更加安全的块模式以及以tream模式运行,包括:
·oOutput FeedBack(nOFB):该模式与OFB模式相类似,但是它的安全性更高,因为它是以整个块(n位)的方式运行的,而不是以单个位来运行的;
·Stream Mode(流模式):是附加模式,可以支持流算法,如WAKE和RC4。


这里仅对CBC的语法做介绍:

string mcrypt_cbc(string cipher,string key,string data,int mode)

该函数有4个参数,第一个cipher表示对数据加密的算法,第二个key是为算法提供的键(密钥),第三个data是被加密的信息,最后一个mode详细说明了数据是被加密还是被解密。

Mcrypt库支持的算法有:
·DES和Triple-DES
·Blowfish
·TWOFISH
·SAFER-SK64
·3-WAY
·RC2
·GOST
·RC6
·RC4
·CAST
·IDEA
·AES

下载Mcrypt函数外部库(版本: 2.5.7 )

http://club.phpe.net/index.php?s=&act=Attach&type=post&id=28237(我做的压缩包,内含外部库函数、安装方法及自己写的一个PHP函数)

或者到PHP官方网站提供的地址去下载:

http://ftp.emini.dk/pub/php/win32/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

支持的加密模式:

cbc cfb ctr ecb ncfb nofb ofb stream

安装方法

1.将libmcrypt.dll复制到system32目录
2.去掉;extension=php_mcrypt.dll前面的分号

重新启动Apache或IIS

我只用了CBC模式,其他的参考PHP官方网站

http://www.php.net/manual/zh/ref.mcrypt.php

Mcrypt函数:

<?php
/*****************************
 * Mcrypt
 * (C)Copyright fzjw
 * Email:fzj-w@126.com
 * 2004/08/22
 ****************************/

function Mcrypt($password){
  $password = trim($password);                    //去掉空格
  $key      = "wwcec.net webmaster fzj-w";    //自定义密钥
  $password = mcrypt_cbc(MCRYPT_LOKI97,$password,$key,MCRYPT_ENCRYPT);
  $password = bin2hex($password);             //将二进制编码转换为16进制
  return $password;
}

//使用方法

$password = Mcrypt($_POST['password'])

?>

 

 

WindowsCE下Unicode和Ansi字符间互相转换的例子

纵所周知,WindowsCE下编程99%的问题都和Unicode有关.比如文件编辑,一般都保存为Ansi格式;无线通讯中控制Modem需要发送的AT指令,必须是Ansi格式;网络通讯中,PC端一般都是...
  • shiqizheng
  • shiqizheng
  • 2003-02-19 09:12:00
  • 764

php mcrypt CBC

  • z330249949
  • z330249949
  • 2015-06-04 17:13:11
  • 2061

PHP安全处理之Mcrypt使用总结

我们知道在编写代码程序时,除了要保证代码的高性能,还有一个非常重要的,就是数据的安全。对于PHP而言,它本身提供了几种加密数据的办法,不过还是有限,对于满足特殊数据加解密方面有些欠缺,所以这里推荐使用...
  • why_2012_gogo
  • why_2012_gogo
  • 2016-04-19 22:24:53
  • 5458

IOS 与 PHP 通信加密,使用AES 128 CBC no padding

这个网上的资料真实浩如烟海,但是真正有价值的屈指可数 自己尝试了一天多,终于还是搞定了。 再次要感谢网上的前辈么。 比如下面这个关于php和java端的实现: http://my.oschin...
  • j_akill
  • j_akill
  • 2015-03-05 11:12:06
  • 11486

php使用内置的mcrypt_encrypt和mcrypt_decrypt进行字符串加密解密

作者: lee 日期: 2012 年 08 月 16 日发表评论 (1)查看评论 网上的一片技术文章, 今天刚好用到, 转载, 自己懒得写了. 原文地址: http://blo...
  • zhx1259135417
  • zhx1259135417
  • 2014-12-09 11:30:28
  • 21149

PHP版本DES加密解(对应.net版与JAVA版)

最近由于项目需要,需要与.net,java进行对接,其中有DES加解密这块。 发现他们两个的DES并不通用。 ...
  • xm1331305
  • xm1331305
  • 2012-12-21 09:53:46
  • 4235

Deprecated: Function xxx() is deprecated

1,Deprecated: Function ereg_replace() is deprecated 在php5.3.0后的版本,取消了对ereg函数的支持,惹得若干程序需要改动,譬如我安装的ze...
  • QQ635785620
  • QQ635785620
  • 2012-11-17 17:25:49
  • 6607

ubuntu 14.04开启Mcrypt服务

要部署laravel项目到了LNMP服务器的时候,是需要开启mcrypt服务。一般情况下,部署LNMP环境的时候,mcrypt一般都会一般安装完毕了。但是这个服务默认是关闭的,所以需要手动开启。 1、...
  • u011044497
  • u011044497
  • 2016-06-14 11:53:49
  • 979

使用openssl_encrypt方法替代mcrypt_encrypt做AES加密

mcrypt_encrypt在php7.1中已被废弃,需要使用openssl_encrypt代替
  • xionggang1024
  • xionggang1024
  • 2017-08-02 19:20:05
  • 4082

【PHP7.1】使用OpenSSL来代替Mcrypt加解密【原创】

PHP7.1使用OpenSSL来代替Mcrypt加解密
  • jiandanokok
  • jiandanokok
  • 2017-10-17 20:01:48
  • 582
收藏助手
不良信息举报
您举报文章:PHP中的Mcrypt函数库应用
举报原因:
原因补充:

(最多只允许输入30个字)