仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 3448|回复: 20
打印 上一主题 下一主题

[学习教程] PHP网页编程之PHP中的加密功效(2)

[复制链接]
若天明 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-16 00:26:14 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
一些真正的强人总会搞出新玩意来丢给你,你不学就落后了,也印证了前人的经验,果然是学无止境啊!   

了局:

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-5-7 19:30:55 | 显示全部楼层
不禁又想起那些说php是草根语言的人,为什么认得差距这么大呢。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-8 03:36

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表