PHP使用自定義key實(shí)現(xiàn)對(duì)數(shù)據(jù)加密解密的方法
本文實(shí)例講述了PHP使用自定義key實(shí)現(xiàn)對(duì)數(shù)據(jù)加密解密的方法。分享給大家供大家參考,具體如下:
客戶端和服務(wù)端通信時(shí),有個(gè)場(chǎng)景很常見,通過一個(gè)id作為url參數(shù)來回傳遞。假設(shè)現(xiàn)在業(yè)務(wù)上只有這個(gè)id標(biāo)識(shí),那么需要稍微安全一點(diǎn)的通信,對(duì)這個(gè)id進(jìn)行加密傳輸,到服務(wù)端再進(jìn)行解密。這里需要一個(gè)服務(wù)端進(jìn)行保密的key,利用這個(gè)key進(jìn)行加密和解密。
加解密的方法如下:$str是需要加解密的字符串,$key是自己定義的一個(gè)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的這個(gè)場(chǎng)景,那么加密過后,是base64的編碼,建議再urlencode()
下,去除+號(hào)的影響。
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é)》
希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。
相關(guān)文章
PHP異常Parse error: syntax error, unexpected T_VAR錯(cuò)誤解決方法
在PHP中根本不需要使用var聲明的,但是當(dāng)一個(gè)變量作為一個(gè)類的成員變量的時(shí)候,使用var還是沒有問題的2014-05-05PHP 緩存實(shí)現(xiàn)代碼及詳細(xì)注釋
PHP緩存實(shí)現(xiàn),實(shí)現(xiàn)了apc和文件緩存,繼承Cache_Abstract即可實(shí)現(xiàn)調(diào)用第三方的緩存工具。參考shindig的緩存類和apc。2010-05-05php 啟動(dòng)時(shí)報(bào)錯(cuò)的簡(jiǎn)單解決方法
php啟動(dòng)時(shí)報(bào)錯(cuò)的情況,想必很多朋友都有遇到吧,下面為大家介紹下比較不錯(cuò)的解決方法2014-01-01那些年我們錯(cuò)過的魔術(shù)方法(Magic Methods)
PHP 對(duì)象的一個(gè)優(yōu)勢(shì)是可以使用魔術(shù)方法,這些方法可以不需要修改外部代碼而重寫一個(gè)類的默認(rèn)行為,這使得PHP 語法有更少的冗余性和更具有擴(kuò)展性。這些方法很好識(shí)別,他們都是以雙下劃線(__)開始的2014-01-01php+redis在實(shí)際項(xiàng)目中HTTP 500: Internal Server Error故障排除
用戶量快速增長(zhǎng),訪問量在短時(shí)間內(nèi)翻倍,由于前期容量規(guī)劃做得比較好,硬件資源可以支撐,可是軟件系統(tǒng)方面出現(xiàn)了大問題:40% 的請(qǐng)求都會(huì)返回 HTTP 500: Internal Server Error2017-02-02