本文实例讲述了php基于mcrypt_encrypt和mcrypt_decrypt实现字符串加密解密的方法。分享给大家供大家参考,具体如下:
由于出于安全考虑,参数传递的时候需要进行加密和解密,一个比较简单的方法是直接使用php中的函数mcrypt_encrypt、mcrypt_decrypt,一个加密,一个解密,但是问题又出现了,这个加密过程中会产生一些使url混乱的符号,于是在加密后对加密字符再进行一次处理,然后多了一一次解析:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
$key = "miyao" ; //密钥
$string = "jiami" //需要加密的字符
//自带的加密函数
$crypttext = base64_encode (mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5( $key ), $string , MCRYPT_MODE_CBC, md5(md5( $key ))));
$encrypted =trim( $this ->safe_b64encode( $crypttext )); //对特殊字符进行处理
$key = "miyao"
$crypttexttb =safe_b64decode( $encrypted ) //对特殊字符解析
$decryptedtb = rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5( $key ), base64_decode ( $crypttexttb ), MCRYPT_MODE_CBC, md5(md5( $key ))), "\0" ) //解密函数
//处理特殊字符
public function safe_b64encode( $string ) {
$data = base64_encode ( $string );
$data = str_replace ( array ( '+' , '/' , '=' ), array ( '-' , '_' , '' ), $data );
return $data ;
}
//解析特殊字符
public function safe_b64decode( $string ) {
$data = str_replace ( array ( '-' , '_' ), array ( '+' , '/' ), $string );
$mod4 = strlen ( $data ) % 4;
if ( $mod4 ) {
$data .= substr ( '====' , $mod4 );
}
return base64_decode ( $data );
}
|
希望本文所述对大家PHP程序设计有所帮助。