本文实例讲述了PHP实现的简单对称加密与解密方法。分享给大家供大家参考,具体如下:
方法一:YII自带的加密方法
1
2
3
4
5
6
7
|
/** * 加密 * @var string [要加密的值] */ $secretKey = "wwj" ; $data = $res [ 'u_id' ]; $encryptedData = Yii:: $app ->getSecurity()->encryptByPassword( $data , $secretKey ); |
1
2
3
4
5
6
7
|
/** * 解密 * @var [type] [加密前的值] */ $aid = $req ->get( 'uid' ); $secretKey = "wwj" ; $uid = Yii:: $app ->getSecurity()->decryptByPassword( $aid , $secretKey ); |
方法二:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
/** * 安全URL编码 * @param type $data * @return type */ function encode( $data ) { return str_replace ( array ( '+' , '/' , '=' ), array ( '-' , '_' , '' ), base64_encode (serialize( $data ))); } /** * 安全URL解码 * @param type $string * @return type */ function decode( $string ) { $data = str_replace ( array ( '-' , '_' ), array ( '+' , '/' ), $string ); $mod4 = strlen ( $data ) % 4; ( $mod4 ) && $data .= substr ( '====' , $mod4 ); return unserialize( base64_decode ( $data )); } |
方法三:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
/** * 加密 * @param [type] $code [description] * @return [type] [description] */ public static function encrypt( $code ) { return urlencode( base64_encode (mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5( "key" ), $code , MCRYPT_MODE_ECB, mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB), MCRYPT_RAND)))); } /** * 解密 * @param [type] $code [description] * @return [type] [description] */ public static function decrypt( $code ) { return urldecode(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5( "key" ), base64_decode ( $code ), MCRYPT_MODE_ECB, mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB), MCRYPT_RAND))); } |
方法四:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
/** * 简单对称加密 * @param string $string [需要加密的字符串] * @param string $skey [加密的key] * @return [type] [加密后] */ function encode( $string = '' , $skey = 'cxphp' ) { $strArr = str_split ( base64_encode ( $string )); $strCount = count ( $strArr ); foreach ( str_split ( $skey ) as $key => $value ) $key < $strCount && $strArr [ $key ].= $value ; return str_replace ( array ( '=' , '+' , '/' ), array ( 'O0O0O' , 'o000o' , 'oo00o' ), join( '' , $strArr )); } |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
/** * 简单对称解密 * @param string $string [加密后的值] * @param string $skey [加密的key] * @return [type] [加密前的字符串] */ function decode( $string = '' , $skey = 'cxphp' ) { $strArr = str_split ( str_replace ( array ( 'O0O0O' , 'o000o' , 'oo00o' ), array ( '=' , '+' , '/' ), $string ), 2); $strCount = count ( $strArr ); foreach ( str_split ( $skey ) as $key => $value ) $key <= $strCount && isset( $strArr [ $key ]) && $strArr [ $key ][1] === $value && $strArr [ $key ] = $strArr [ $key ][0]; return base64_decode (join( '' , $strArr )); } |
PS:关于加密解密感兴趣的朋友还可以参考本站在线工具:
文字在线加密解密工具(包含AES、DES、RC4等):
https://tool.zzvips.com/t/aesdes/
MD5在线加密工具:
https://tool.zzvips.com/t/md5/
在线sha1/sha224/sha256/sha384/sha512加密工具:
https://tool.zzvips.com/t/sha/
希望本文所述对大家PHP程序设计有所帮助。
原文链接:http://blog.csdn.net/qq_36030412/article/details/53068474