admin 管理员组

文章数量: 1086019


2024年4月25日发(作者:快速排序举例说明)

维普资讯

j盆}3lI信息网络翻用P P避行数据细留的投术探讨 

文/殷诚 

冶网络 擅9大量交易 簪 据。密码学可以通f 

被盛 甥寸方口/解密的 实验,加密是 剔 将铹 ; 

程。不易国掘矧啪嘶科乍番 码,易国 酣 耳码。数据 劝口/解 

密豁霰 9算法,这些算舸 j 猫单,但当前的加蔷{算}去 

企!Ild颤婀弹帛闻PHP咖哪 幢I技术 

(1)crypt0函数 

使用t ̄Windows平台经煳 寸cryp 相当自鸲 悉,这一 

函数用来完成凌际怍单向加密的功能,它可以n口密—些明码,但不 

能够将密母转换为原来的明码。尽管从表面 来 }—个没 

有什么用处自锄能,但眩廿弼虢 嘲来保证豸溺播衙驺 因 

为荆嘣拍勺口令_旦落人第 人的手里,由于不能利 为明 

文,因此也没有什/厶大用处。在验证用户输入的口令时,用户的输入 

就采用单 Ⅱ算法,如果输^与存 蚴嗡滔的口令相四配,贝啦乱人 

的口令定是正确的。 

PHP同日提供了懒cryp ̄嘧功自 旨 

函 各式女吓: 

string crypt(string niput_string[,stnng sal 

其中的mpuLst血1g参数居需要加商仔 符串,salt是— 位 

字串,它目蝴劬嘧 『暗码'j 排除 筒 悸 吐 

性 缺省 虢下'PHP使辟卜个2个与 韵DES刊沣,如 系统使 

用的是MD5算法,它会使爵—个12个字符的干扰串。可 丑执行 

下面 赡 粥要使用的干扰 撇: 

print”My system salt size is:”.CRYPT

SALT_LENGTH l 

c珂 渡翔 它 韵镑斡芝采 salt参数 

如下: 

算法 Salt长度 

CRYPT_STD—DES 2-character ̄eraul0 

CRYPTl_EXT—DES 9一character 

CRYPT__MD5 12-characterbeginningwith¥l¥ 

CRYPT

_

BLOWFISH 16-characterbeginningwith 

用crypt净觏用户身份验证 

日用PHP胜 匿 十—个目 『 访问, 屯}午 拘 提供 

正确的用户名和口令的用户访问这一目录。把资料 鹤 据库 

MySQL的—个 冲。下面首先 建这1、{基弱柞members的表: 

mysql>CREATE TABLE members( 

>username CHAR(14)NOT NULL, 

>password CHAR(32)NOT NULL, 

>PRIMARY KEY(ifsername) 

>)。 

用户名密码 

clark keloD 1 C 3771KE 

bruce ba 1 T7vnz9AWgk 

peter paLUVRWsRLZ4U 

这 幼嘧的口令 拍 上l黾kent,banner和parker ̄根 

据口令的前I/ 谶峰旰扰串: 

¥enteredPassword. 

¥salt=substr(¥enteredPassword,0,2); 

¥userPswd—crypt(¥enteredPassword,¥salt); 

// serPswd然后就和用户名 ̄MySQL中 

将 .用Apache的口令j l i丑酉 用户输^用户名和口 

令,—个鲜为 黼关PHP的 漶是,它可以把Apache的口令 

应答系统输入的用户名和口令识别为 HP—AUTH—USER和 

HP—AUTHJ W,枸 淦证 中用 B奎二 E量。在使 

用crypt褓护重要的饥静矧 时1在缺省 嗍的crypt)并不 

是民主 的, 只冉明 别安全 蟊 轴 勒冲,如 鬻豌 的安 

全 睛 ,就需要蝴MD5散歹峭 

(2)MD5函觌牧 填晤 

个混编函数可 肾—儆长赛的信皂变换为具有固定长 

度被混 出,也被称作‘信息文 ’。这是十分有用的,因为 

个固定长窝的字符串可以啊来检查文件的完整陆耙崮碹 半签 

名以及用户身份验证。由于它适合于PHP,所以PHP内置的 

mdS()}昆编函数将把—个町变长度的 刨专换为1 28位(32个字 

的 。混编的— 

信鼠得到原来的明码,因为混编后的结果与原来的明码内容没有 

依赖关系。即便只改变—吟寺:{守串中的— 字符,也将使得MD5 

混编算法计算出二个截然不同的结果。下面是使用md5o的实例 

及其相应的结果; 

<php 

Snput:”HeUo,PHPworld! t 

¥0utput=md5 npuOt 

print”输出: ̄utput”; 

?> 

结 :7996b5e0804042fd531907a4900f190e 

注意,结 毛度为32个字 把醢nput的崮 rL.下,再 

使用md职幅 埠进 昆编; 

<∞hp 

 ̄nput=”HeUo,PHP W0rld 

¥0utput:mdS( ̄npu0z 

print”输出:¥output”l 

?> 

集团经济研究2007.1 0月下旬:FLJ(总第246期) 

维普资讯

绿.hash2:f0456d48ed06a5c35ble42561fa7a016 

bab5e 

可 拔观,尽管二个结 拇 蔓者陧32个字符,但明文中_ 致 

小的变化 胡 洼了很 q变化,可 刊 戋榭 数据 

Decrypted strin ̄Applied Cryptography,by Bruce Schneier, 

isawonderfulcryptographyreferenc ̄ 

上面的代码中二个最典型的函数是mcrypt_encrypt( 啊 

crypt( f韵 易见的。 『‘ 嘧 

尽管cry 翮rodS(洛有用处,但 f睹是 9睛蓄,二各在功 

mcrypLde

Mcrypt提供了几 牛由嘲 方式,由于每科由啼 自可 

能上部受到—定的限制。使用Mcrypt和Mhash, ̄PHP 

码本 ,

用户在加密_方面的选择 

企业离蛳5Il簖佣PHP扪 l缸0嘲獭术 

(1)使用Mcrypt加密算法扩展库 

PHP ̄

面的 懒

Mcrypt 

: 

Mcrypt 2.47是 

中函数mcrypt_create_i ̄ I睦圭的初始化向量hence. 可以使 

每条信 皮IIt独 尽 

如 整黪 致=中没剞 }邋

(2)使用Mhash护馄库 

Q&3版的Mhash ̄@12稍 南算 ,仔细I佥查Mhash 

麒式 畴 錾 啵i :变量,但 

'PHP就 罐黯信 

vn&3 ̄ ̄mhash.h可 饫皑: 攻恃 鼢 触: 

Blowf/sh RC2 Safer-sk64 xtea 

Cast-256 RC4 Safer-sk128 

DES RC4-iv Serpent 

CRC32 HAVAL16OMD5 

CRC32B HAVAL192RIPEMD160 

G0STHAVAL224SHA1 

HAVAI 1 28HAVAI 256TIGER 

r阻p ^lJl  茴  IJf比 椰 ̄lYt1]: 

Enigma R ̄ndael-128 Threeway 

Gost Rijndael-192 TripleDES 

L0KI97 Rijndael一256 Twofish 

PanamaSaferplus Wake 

<?php 

Shash_alg=MHASH_TIGER ̄ 

Smessage=”These are the clirections to the secret fort. 

Two steps left,three steps right,and cha chacha.”; 

Mcrypt的优 又t 目 提侈 喏 驻较多,还在于它 

可以张魄 断动Ⅱ/解密殳臼翌,tf_ ̄b,它还提供了35种处理数据用的 

函魄 

首先,介 敌 吁晓啊Mcrypt扩嗣 剡 珩方嘧,然唇再介 

缴 佣它进 挥瓿 

下面蝴

<?php 

¥hashed—message=mhash(¥hash_alg,Smessage); 

print’。The hashed message is”.bin2hex(¥hashed—message); 

?> 

Mcrypt 

执葡羞{ 特黼 厂F面的渝出 辣: 

The hashed message is O7a92a4db3a4177fl9ec9034ae540 

0eb60dla9fbb4ade461 

//Designate string to be encrypted 

 ̄tfing=“Applied Cryptography,by Bruce Schneier,iS 

a wonderful cryptography reference.”; 

在这里使用bin2hex()函数的目的是方便我们理解 

 ̄ashed_message雠拙, 

需要注裁提,混编黾 

塞 言宦、。这锦

为 

Skey=“Four score and twenty years ago'’t//Encryp— 

tion/decryption key 

¥cipher_alg:MCRYPT—RIJNDAEL128; 

力能,其结夥 蕊舞输入,臣 比可以 F显 

 拥于让用户 

i*v=mcrypt_create_iv (mcryptget—iv—size(¥cipher alg, 

MCRYPT_MODE

供 乏件,l 确 

Mhash还有其他—些有用的函数。例如,我需要输出—个 

Mhash ̄

< hp 

ECB),MCRYPT__RAND); 

print“Oriainal string:Sstring”; 

ng:mcrypt

encrypt(

Sencrypted

stri

¥cipher_alg,Skey, 

,由于Mhash 锕 算 ;字部 

以MHASH一开头,因此,可以通过 

 ̄hash_alg=MHASH—TIGER 

盯l嘈计 }_任务: 

tring,MCRYPT

MODE—CB C, vj; 

print“Encrypted string:”.bin2hex(¥encrypted string). { 

Sdecrypted—string=mcrypt—decrypt(¥cipher—alg,Skey, 

¥encrypted—string,MCRYPTl_MODE—CBC,¥iv); 

print“Decrypted string:¥decryptd—strin ;e 

? 

print”T s data has been hashed with the”.mhash_get

has 

h_name(¥hashed_message).”hashing algorithm.”: 

执行匕面的嘟卒爿 三-f喵珀勺输出: 

得到的输出是:This data has been hashed with the TIGER 

hashingalgorithm. 

Original strin ̄Applied Cryptography,by Bruce Schneier, 

isawonderfulcryptographyreferenc ̄ 

Encrypted string ̄O2a7c58blebd22a9523468694bO91e6041 1 

cc4dea8652bb8072 

34fa06bbfb20e71ecf525f29df58e28f3d9bf541f7ebcecf62b 

关于PHP 

和萄 憔输的数据在 缸 引 交全的!PHP是 糊艮 

完妻 锯毪j立用,建 Apache-SSL或其他 铷黟绪 宿} 

c89fde4d8e7bale6cc9ea24850478c1 1742f5cfa1d23fe22re8b卜 

(f乍者单位:九江职业大 

集团经济研究20o7・1 o月下旬刊(总第246期) 


本文标签: 用户 函数 明码 混编 数据