本文实例讲述了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