本文实例讲述了PHP使用自定义key实现对数据加密解密的方法。分享给大家供大家参考,具体如下:
客户端和服务端通信时,有个场景很常见,通过一个id作为url参数来回传递。假设现在业务上只有这个id标识,那么需要稍微安全一点的通信,对这个id进行加密传输,到服务端再进行解密。这里需要一个服务端进行保密的key,利用这个key进行加密和解密。
加解密的方法如下:$str是需要加解密的字符串,$key是自己定义的一个key
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
// 加密
function encryptStr( $str , $key ){
$block = mcrypt_get_block_size( 'des' , 'ecb' );
$pad = $block - ( strlen ( $str ) % $block );
$str .= str_repeat ( chr ( $pad ), $pad );
$enc_str = mcrypt_encrypt(MCRYPT_DES, $key , $str , MCRYPT_MODE_ECB);
return base64_encode ( $enc_str );
}
// 解密
function decryptStr( $str , $key ){
$str = base64_decode ( $str );
$str = mcrypt_decrypt(MCRYPT_DES, $key , $str , MCRYPT_MODE_ECB);
$block = mcrypt_get_block_size( 'des' , 'ecb' );
$pad = ord( $str [( $len = strlen ( $str )) - 1]);
return substr ( $str , 0, strlen ( $str ) - $pad );
}
|
值得一提的是:
如果说应用到url中id的这个场景,那么加密过后,是base64的编码,建议再urlencode()
下,去除+号的影响。
PS:关于加密解密感兴趣的朋友还可以参考本站在线工具:
文字在线加密解密工具(包含AES、DES、RC4等):https://tool.zzvips.com/t/txtencode/
MD5在线加密工具:https://tool.zzvips.com/t/md5/
在线Escape加密、解密工具:https://tool.zzvips.com/t/escape/
在线sha1/sha224/sha256/sha384/sha512加密工具:https://tool.zzvips.com/t/sha/
希望本文所述对大家PHP程序设计有所帮助。
原文链接:http://www.cnblogs.com/firstForEver/p/5747065.html