本文實(shí)例講述了PHP使用自定義key實(shí)現(xiàn)對數(shù)據(jù)加密解密的方法。分享給大家供大家參考,具體如下:
客戶端和服務(wù)端通信時(shí),有個場景很常見,通過一個id作為url參數(shù)來回傳遞。假設(shè)現(xiàn)在業(yè)務(wù)上只有這個id標(biāo)識,那么需要稍微安全一點(diǎn)的通信,對這個id進(jìn)行加密傳輸,到服務(wù)端再進(jìn)行解密。這里需要一個服務(wù)端進(jìn)行保密的key,利用這個key進(jìn)行加密和解密。
加解密的方法如下:$str是需要加解密的字符串,$key是自己定義的一個key
// 加密 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); }
值得一提的是:
如果說應(yīng)用到url中id的這個場景,那么加密過后,是base64的編碼,建議再urlencode()
下,去除+號的影響。
PS:關(guān)于加密解密感興趣的朋友還可以參考本站在線工具:
文字在線加密解密工具(包含AES、DES、RC4等):
http://tools.jb51.net/password/txt_encode
MD5在線加密工具:
http://tools.jb51.net/password/CreateMD5Password
在線散列/哈希算法加密工具:
http://tools.jb51.net/password/hash_encrypt
在線MD5/hash/SHA-1/SHA-2/SHA-256/SHA-512/SHA-3/RIPEMD-160加密工具:
http://tools.jb51.net/password/hash_md5_sha
在線sha1/sha224/sha256/sha384/sha512加密工具:
http://tools.jb51.net/password/sha_encode
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《php加密方法總結(jié)》、《PHP編碼與轉(zhuǎn)碼操作技巧匯總》、《PHP數(shù)學(xué)運(yùn)算技巧總結(jié)》、《PHP數(shù)組(Array)操作技巧大全》、《php字符串(string)用法總結(jié)》、《PHP數(shù)據(jù)結(jié)構(gòu)與算法教程》、《php程序設(shè)計(jì)算法總結(jié)》及《php正則表達(dá)式用法總結(jié)》
希望本文所述對大家PHP程序設(shè)計(jì)有所幫助。