PHP實(shí)現(xiàn)的簡單對(duì)稱加密與解密方法實(shí)例小結(jié)
本文實(shí)例講述了PHP實(shí)現(xiàn)的簡單對(duì)稱加密與解密方法。分享給大家供大家參考,具體如下:
方法一:YII自帶的加密方法
/** * 加密 * @var string [要加密的值] */ $secretKey = "wwj"; $data = $res['u_id']; $encryptedData = Yii::$app->getSecurity()->encryptByPassword($data, $secretKey);
/**
* 解密
* @var [type] [加密前的值]
*/
$aid = $req->get('uid');
$secretKey = "wwj";
$uid = Yii::$app->getSecurity()->decryptByPassword($aid,$secretKey);
方法二:
/**
* 安全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));
}
方法三:
/**
* 加密
* @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)));
}
方法四:
/**
* 簡單對(duì)稱加密
* @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));
}
/**
* 簡單對(duì)稱解密
* @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:關(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中怎么搜索相關(guān)聯(lián)數(shù)組鍵值及獲取之
array_search()函數(shù)在一個(gè)數(shù)組中搜索一個(gè)指定的值,如果找到則返回相應(yīng)的鍵,否則返回FALSE2013-10-10
php實(shí)現(xiàn)pdo數(shù)據(jù)庫操作類過程詳解
這篇文章主要介紹了php實(shí)現(xiàn)pdo數(shù)據(jù)庫操作類過程,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2022-12-12
PHP使用緩存即時(shí)輸出內(nèi)容(output buffering)的方法
這篇文章主要介紹了PHP使用緩存即時(shí)輸出內(nèi)容(output buffering)的方法,實(shí)例分析了php緩存輸出的相關(guān)使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-08-08
php 刪除一個(gè)數(shù)組中的某個(gè)值.兼容多維數(shù)組!
php中刪除一個(gè)數(shù)組中的某個(gè)值.兼容多維數(shù)組,需要的朋友可以參考下2012-02-02
php清空(刪除)指定目錄下的文件,不刪除目錄文件夾的實(shí)現(xiàn)代碼
這篇文章主要介紹了php清空(刪除)指定目錄下的文件,不刪除目錄文件夾的實(shí)現(xiàn)代碼,需要的朋友可以參考下2014-09-09
如何取得中文字符串中出現(xiàn)次數(shù)最多的子串
以下是對(duì)取得中文字符串中出現(xiàn)次數(shù)最多的子串的實(shí)現(xiàn)代碼進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過來參考下2013-08-08
php定義參數(shù)數(shù)量可變的函數(shù)用法實(shí)例
這篇文章主要介紹了php定義參數(shù)數(shù)量可變的函數(shù)用法,實(shí)例分析了func_get_args的使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-03-03

