PHP中对字符串进行加密解密函数与DES加密解密实例代码
分类:PHP_Python| 发布:kuabaobao| 查看:362 | 发表时间:2015/2/5
本文实例讲述了PHP中加密解密函数与DES加密解密的应用,分享给大家供大家参考。具体如下:
例子,php加密解密的例子
加密函数:
代码如下:
06 | function passport_encrypt( $str , $key ){ |
07 | srand((double)microtime() * 1000000); |
08 | $encrypt_key =md5(rand(0, 32000)); |
11 | for ( $i =0; $i < strlen ( $str ); $i ++){ |
12 | $ctr = $ctr == strlen ( $encrypt_key )?0: $ctr ; |
13 | $tmp .= $encrypt_key [ $ctr ].( $str [ $i ] ^ $encrypt_key [ $ctr ++]); |
15 | return base64_encode (passport_key( $tmp , $key )); |
解密代码如下:
代码如下:
06 | function passport_decrypt( $str , $key ){ |
07 | $str =passport_key( base64_decode ( $str ), $key ); |
09 | for ( $i =0; $i < strlen ( $str ); $i ++){ |
11 | $tmp .= $str [++ $i ] ^ $md5 ; |
代码如下:
04 | function passport_key( $str , $encrypt_key ){ |
05 | $encrypt_key =md5( $encrypt_key ); |
08 | for ( $i =0; $i < strlen ( $str ); $i ++){ |
09 | $ctr = $ctr == strlen ( $encrypt_key )?0: $ctr ; |
10 | $tmp .= $str [ $i ] ^ $encrypt_key [ $ctr ++]; |
代码如下:
03 | $encrypt =passport_encrypt( $str , $key ); |
04 | $decrypt =passport_decrypt( $encrypt , $key ); |
DES加密解密函数具体代码如下:
代码如下:
07 | function DES( $key , $iv =0 ) { |
17 | function encrypt( $str ) { |
19 | $size = mcrypt_get_block_size ( MCRYPT_DES, MCRYPT_MODE_CBC ); |
20 | $str = $this ->pkcs5Pad ( $str , $size ); |
21 | return strtoupper ( bin2hex( mcrypt_cbc(MCRYPT_DES, $this ->key, $str , MCRYPT_ENCRYPT, $this ->iv ) ) ); |
24 | function decrypt( $str ) { |
26 | $strBin = $this ->hex2bin( strtolower ( $str ) ); |
27 | $str = mcrypt_cbc( MCRYPT_DES, $this ->key, $strBin , MCRYPT_DECRYPT, $this ->iv ); |
28 | $str = $this ->pkcs5Unpad( $str ); |
32 | function hex2bin( $hexData ) { |
34 | for ( $i = 0; $i < strlen ( $hexData ); $i += 2) { |
35 | $binData .= chr ( hexdec ( substr ( $hexData , $i , 2 ) ) ); |
40 | function pkcs5Pad( $text , $blocksize ) { |
41 | $pad = $blocksize - ( strlen ( $text ) % $blocksize ); |
42 | return $text . str_repeat ( chr ( $pad ), $pad ); |
45 | function pkcs5Unpad( $text ) { |
46 | $pad = ord ( $text { strlen ( $text ) - 1} ); |
47 | if ( $pad > strlen ( $text )) |
49 | if ( strspn ( $text , chr ( $pad ), strlen ( $text ) - $pad ) != $pad ) |
51 | return substr ( $text , 0, - 1 * $pad ); |
以下是测试结果:
代码如下:
3 | $crypt = new DES( $key ); |
4 | $mstr = $crypt ->encrypt( $str ); |
5 | $str = $crypt ->decrypt( $mstr ); |
6 | echo $str . ' <=> ' . $mstr ; |
例子2
代码如下:
04 | function args_encode( $data ) { |
06 | $string = http_build_query( $data ); |
07 | return base64_encode ( $string ); |
16 | $string = base64_decode ( $_GET [ 'args' ]); |
17 | parse_str ( $string , $g ); |
希望本文所述对大家的PHP程序设计有所帮助。