仓酷云

标题: PHP网页编程之PHP中的加密功效(2) [打印本页]

作者: 若天明    时间: 2015-2-16 00:26
标题: PHP网页编程之PHP中的加密功效(2)
一些真正的强人总会搞出新玩意来丢给你,你不学就落后了,也印证了前人的经验,果然是学无止境啊!   

了局:

hash2: e86cf511bd5490d46d5cd61738c82c0c
   可以发明,虽然二个了局的长度都是32个字符,但明文中一点巨大的变更使得了局产生了很大的变更,因而,混编和md5()函数是反省数据中巨大变更的一个很好的东西。

   虽然crypt()和md5()各有效处,但两者在功效上都遭到必定的限制。鄙人面的局部中,咱们将引见二个十分有效的被称作Mcrypt和Mhash的PHP扩大,将大大拓展PHP用户在加密方面的选择。

   虽然咱们在下面的大节中申明了单向加密的主要性,但有时咱们能够需求在加密后,再把暗码数据复原成本来的数据,侥幸的是,PHP经由过程Mcrypt扩大库的模式供应了这类能够性。

Mcrypt
Mcrypt 2.5.7 Unix | Win32
   Mcrypt 2.4.7是一个功效壮大的加密算法扩大库,它包含有22种算法,个中就包含上面的几种算法:

Blowfish RC2 Safer-sk64 xtea
Cast-256 RC4 Safer-sk128
DES RC4-iv Serpent
Enigma Rijndael-128 Threeway
Gost Rijndael-192 TripleDES
LOKI97 Rijndael-256 Twofish
PanamaSaferplus Wake
装置:
   在尺度的PHP软件包中不包含Mcrypt,因而需求下载它,下载的地址为:ftp://argeas.cs-net.gr/pub/unix/mcrypt/。下载后,依照上面的办法停止编译,并把它扩大在PHP中:

下载Mcrypt软件包。
gunzipmcrypt-x.x.x.tar.gz
tar -xvfmcrypt-x.x.x.tar
./configure --disable-posix-threads
make
make install
cd to your PHP directory.
./configure -with-mcrypt=[dir] [--other-configuration-directives]
make
make install
   固然了,依据你的请求和PHP装置时与互联网办事器软件的关系,下面的进程能够需求作恰当的修正。

利用Mcrypt
   Mcrypt的长处不单单在于其供应的加密算法较多,还在于它可以对数据停止加/解密处置,另外,它还供应了35种处置数据用的函数。虽然对这些函数停止具体引见已超越了这篇文章的局限,我仍是要就几个典范的函数作一下扼要的引见。

   起首,我将引见若何利用Mcrypt扩大库对数据停止加密,然后再引见若何利用它停止解密。上面的代码对这一进程停止了演示,起首是对数据停止加密,然后在阅读器上显示加密后的数据,并将加密后的数据复原为本来的字符串,将它显示在阅读器上。

利用Mcrypt对数据停止加、解密
<?php

// Designate string to be encrypted
$string = "Applied Cryptography, by Bruce Schneier, is
a wonderful cryptography reference.";

// Encryption/decryption key
$key = "Four score and twenty years ago";

// Encryption Algorithm
$cipher_alg = MCRYPT_RIJNDAEL_128;

// Create the initialization vector for added security.
$iv = mcrypt_create_iv(mcrypt_get_iv_size($cipher_alg,
MCRYPT_MODE_ECB), MCRYPT_RAND);

// Output original string
print "Original string: $string <p>";

// Encrypt $string
$encrypted_string = mcrypt_encrypt($cipher_alg, $key,
$string, MCRYPT_MODE_CBC, $iv);

// Convert to hexadecimal and output to browser
print "Encrypted string: ".bin2hex($encrypted_string)."<p>";

$decrypted_string = mcrypt_decrypt($cipher_alg, $key,
$encrypted_string, MCRYPT_MODE_CBC, $iv);

print "Decrypted string: $decrypted_string";

?>

履行下面的剧本将会发生上面的输入:

Original string: Applied Cryptography, by Bruce Schneier, is a wonderful cryptography reference.

Encrypted string: 02a7c58b1ebd22a9523468694b091e60411cc4dea8652bb8072 34fa06bbfb20e71ecf525f29df58e28f3d9bf541f7ebcecf62b c89fde4d8e7ba1e6cc9ea24850478c11742f5cfa1d23fe22fe8 bfbab5e

Decrypted string: Applied Cryptography, by Bruce Schneier, is a wonderful cryptography reference.

   下面的代码中二个最典范的函数是mcrypt_encrypt()和mcrypt_decrypt(),它们的用处是不言而喻的。我利用了“电报暗码本”形式,Mcrypt供应了几种加密体例,因为每种加密体例都有可以影响暗码平安的特定字符,因而每种形式都需求懂得。关于没有接触过暗码体系的读者来讲,能够对mcrypt_create_iv()函数更有乐趣,虽然对这一函数停止完全的注释已超越了本篇文章的局限,但我依然会提到它创立的初始化向量(hence, iv),这一贯量可使每条信息彼此自力。虽然不是一切的形式都需求这一初始化变量,但假如在请求的形式中没有供应这一变量,PHP就会给出正告信息。

Mhash扩大库
http://sourceforge.net/projects/mhash/

   0.8.3版的Mhash扩大库撑持12种混编算法,细心反省Mhash v.0.8.3的头文件mhash.h可以晓得,它撑持上面的混编算法:

CRC32 HAVAL160 MD5
CRC32B HAVAL192 RIPEMD160
GOST HAVAL224 SHA1
HAVAL128 HAVAL256 TIGER
装置
   象Mcrypt一样,Mhash也没有包含在PHP软件包中,关于非Windows用户而言,上面是装置进程:

下载Mhash扩大库
gunzipmhash-x.x.x.tar.gz
tar -xvfmhash-x.x.x.tar
./configure
make
make install
cd <PHP地点的目次>
./configure -with-mhash=[dir] [--other-configuration-directives]
make
make install
   象Mcrypt一样,依据PHP在互联网办事器软件上的装置体例,能够需求对Mhash停止其他的设置装备摆设。

   关于Windows用户而言,http://www.php4win.de中有一个很好的包含Mhash扩大库在内的PHP软件包。只需下载并停止解紧缩,然后依据个中的readme.first文档中的指令停止装置便可。

利用Mhash
   对信息停止混编十分复杂,看一下上面的例子:

<?php
$hash_alg = MHASH_TIGER;
$message = "These are the directions to the secret fort. Two steps left, three steps right, and cha chacha.";
$hashed_message = mhash($hash_alg, $message);
print "The hashed message is ". bin2hex($hashed_message);
?>

   履行这一段剧本法式将失掉上面的输入了局:

The hashed message is 07a92a4db3a4177f19ec9034ae5400eb60d1a9fbb4ade461
    在这里利用bin2hex()函数的目标是便利咱们了解$hashed_message的输入,这是由于混编的了局是二进制格局,为了可以将它转化为易于了解的格局,必需将它转换为十六进制格局。
培训的第二阶段,开始了PHP语言语法结构和应用的学习。
作者: 柔情似水    时间: 2015-2-16 02:34
作为一个合格的coder 编码的规范是必须,命名方面我推崇“驼峰法”,另外就是自己写的代码最好要带注释,不然时间长了,就算是自己的代码估计看起来都费事,更不用说别人拉。
作者: 仓酷云    时间: 2015-2-18 06:18
建数据库表的时候,int型要输入长度的,其实是个摆设的输入几位都没影响的,只要大于4就行,囧。
作者: 灵魂腐蚀    时间: 2015-2-21 18:04
最后祝愿,php会给你带来快乐的同时 你也会给他带来快乐。
作者: 小妖女    时间: 2015-3-6 20:34
有位前辈曾经跟我说过,phper 至少要掌握200个函数 编起程序来才能顺畅点,那些不熟悉的函数记不住也要一拿手册就能找到。所以建议新手们没事就看看php的手册(至少array函数和string函数是要记牢的)。
作者: 不帅    时间: 2015-3-13 00:07
真正的方向了,如果将来要去开发团队,你一定要学好smarty ,phplib这样的模板引擎,
作者: 莫相离    时间: 2015-3-14 15:26
如果你已经到这种程度了,那么你已经可以做我的老师了。其实php也分很多的区域,
作者: 变相怪杰    时间: 2015-3-17 04:44
要进行开发,搭建环境是首先需要做的事,windows下面我习惯把环境那个安装在C盘下面,因为我配的环境经常出现诡异事件,什么事都没做环境有的时候就不能用啦。
作者: 愤怒的大鸟    时间: 2015-3-23 19:29
说php的话,首先得提一下数组,开始的时候我是最烦数组的,总是被弄的晕头转向,不过后来呢,我觉得数组里php里最强大的存储方法,所以建议新手们要学好数组。
作者: 金色的骷髅    时间: 2015-4-5 21:50
如果你可以写完像留言板这样的程序,那么你可以去一些别人的代码了,
作者: 第二个灵魂    时间: 2015-4-6 15:35
对于初学者来说不推荐去拿钱买的。当然如果一个网站你经常去用,而且里面的资料也比较有用,最好还是买个会员比较好,毕竟那些也是别人的工作成果。
作者: 老尸    时间: 2015-4-16 07:12
我要在声明一下:我是个菜鸟!!我对php这门优秀的语言也是知之甚少。但是我要在这里说一下php在网站开发中最常用的几个功能:
作者: 兰色精灵    时间: 2015-4-21 07:26
,熟悉html,能用div+css,还有javascript,优先考虑linux。我在开始学习的时候,就想把这些知识一起学习,我天真的认为同时学习能够互相呼应,因为知识是相通的。
作者: 活着的死人    时间: 2015-4-22 02:04
对于懒惰的朋友,我推荐php的集成环境xampp或者是wamp。这两个软件安装方便,使用简单。但是我还是强烈建议自己动手搭建开发环境。
作者: 蒙在股里    时间: 2015-4-28 01:27
我学习了一段时间后,我发现效果并不好(估计是我自身的问题)。因为一个人的精力总是有限的,同时学习这么多,会导致每个的学习时间都得不到保证。
作者: 若天明    时间: 2015-5-7 19:30
不禁又想起那些说php是草根语言的人,为什么认得差距这么大呢。
作者: 海妖    时间: 2015-5-8 13:29
首先声明:我是一个菜鸟,是一个初学者。学习了一段php后总是感觉自己没有提高,无奈。经过反思我认为我学习过程中存在很多问题,我改变了学习方法后自我感觉有了明显的进步。
作者: 简单生活    时间: 2015-6-4 00:29
遇到出错的时候,我经常把错误信息直接复制到 google的搜索栏,一般情况都是能搜到结果的,不过有时候会搜出来一大片英文的出来,这时候就得过滤一下,吧中文的弄出来,挨着式方法。
作者: 小女巫    时间: 2015-6-18 06:48
装在C盘下面可以利用windows的ghost功能可以还原回来(顺便当做是重转啦),当然啦我的编译目录要放在别的盘下,不然自己的劳动成果就悲剧啦。
作者: 冷月葬花魂    时间: 2015-6-26 20:50
刚开始安装php的时候,我图了个省事,把php的扩展全都打开啦(就是把php.ini 那一片 extension 前面的冒号全去掉啦),这样自然有好处,以后不用再需要什么功能再来打开。
作者: 飘飘悠悠    时间: 2015-7-4 07:45
对于懒惰的朋友,我推荐php的集成环境xampp或者是wamp。这两个软件安装方便,使用简单。但是我还是强烈建议自己动手搭建开发环境。




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2