PHP加密解密函数及DES加密解密案例

本文介绍了在PHP中加密解密功能和des加密解密的应用,供大家参考:

例如,PHP加密和解密的示例

加密功能:

将代码复制如下:

*功能:对字符串进行加密

*参数1:需要加密的内容

*参数二:键

* /

功能passport_encrypt($str,美元关键){ / /加密功能

Srand((双)瞬时()* 1000000);

encrypt_key美元= MD5(rand(0, 32000));

$ = 0;

$=;

为($我= 0;$i < strlen(str);$ i++){

点击率=点击率= =美元美元strlen($ encrypt_key)0美元的点击率;

美元美元美元encrypt_key TMP。= {中心}。($str { } {我^美元美元美元encrypt_key CTR + });

}

返回base64_encode(passport_key($ TMP,美元关键));

}

解密代码如下所示:

将代码复制如下:

*函数:字符串的解密

*参数1:需要解密的密码

*参数二:键

* /

功能passport_decrypt($str,美元关键){ / /解密功能

$str = passport_key(base64_decode(str),为重点);

$=;

为($我= 0;$i < strlen(str);$ i++){

$;

$;

}

返回$ TMP;

}

辅助功能:

将代码复制如下:

*辅助功能

* /

功能passport_key($str,encrypt_key美元){

encrypt_key美元= MD5($ encrypt_key);

$ = 0;

$=;

为($我= 0;$i < strlen(str);$ i++){

点击率=点击率= =美元美元strlen($ encrypt_key)0美元的点击率;

$ TMP。= str { } {我^美元美元美元encrypt_key CTR + };

}

返回$ TMP;

}

如下所示使用

复制代码代码如下:$str = 'author:';

美元的关键=为123456;

加密passport_encrypt($str =美元,美元关键);

美元($加密、解密= passport_decrypt美元关键);

回声的原文:',' $结构;

回声'密文',$加密。;

回声翻译:$,解密。;

des加密解密功能具体代码如下:

复制代码代码如下:< PHP

类DES

{

var密钥;

var;



函数DES($键,$ IV = 0){

/ /密钥长度的8,例如:1234abcd

$此键= $键;

如果($ = 0){

$;

{ { { }

美元-> IV = $ / / mcrypt_create_iv IV;(mcrypt_get_block_size(mcrypt_des,mcrypt_mode_cbc),mcrypt_dev_random);

}

}



函数加密($ STR){

返回十六个十六进制字符串加密,大写

美元mcrypt_get_block_size大小=(mcrypt_des,mcrypt_mode_cbc);

$str =美元-> pkcs5pad($str,$大小);

返回strtoupper(bin2hex(mcrypt_cbc(mcrypt_des,美元->键,$str,mcrypt_encrypt,美元-> IV))))

}



解密函数($ STR){

解密

strbin美元=美元-> hex2bin(strtolower($str));

$str = mcrypt_cbc(mcrypt_des,美元->键,strbin美元,mcrypt_decrypt,美元-> IV);

$str =美元-> pkcs5unpad($str);

返回$ STR;

}



功能hex2bin($ hexdata){

= $ bindata ;

为($我= 0;$我< strlen($ hexdata);$我= 2){

bindata美元= CHR(hexdec(substr(hexdata美元美元,我,2)));

}

返回的bindata;

}



功能pkcs5pad($文本块美元){

垫块美元=美元-(strlen($文本)% $块);

返回$文本。str_repeat(CHR(合垫),合垫);

}



功能pkcs5unpad($文本){

合垫= ORD($课文{ strlen($文本)- 1 });

如果(合垫> strlen($文本))

返回false;

如果(strspn(合文本,CHR(合垫),strlen($文本)至垫)!= PAD)

返回false;

返回substr(合文本,0,- 1 * $垫);

}

}

>

以下是测试的结果:

复制代码如下:$str = '12345678;

美元关键= '1234abcd;

$ =新des($键);

个美元=美元隐窝->加密($str);

$str = $地穴->解密($ MSTR);

echo $海峡个美元;

例2

代码如下:

将代码复制如下:

*对需要通过URL中GET模式传递的参数进行加密。

* /

功能args_encode($数据){

如果(is_array($数据)){

字符串= http_build_query美元(美元数据);

返回base64_encode($字符串);

{人}

返回false;

}

}



*获取URL中get模式传递的参数

* /

功能getargs(){

$字符串base64_decode($ _get { 'args});

parse_str($字符串$ G);

返回G;

}

希望本文能对大家的PHP程序设计有所帮助。