PHP實(shí)現(xiàn)的簡(jiǎn)單對(duì)稱(chēng)加密與解密方法實(shí)例小結(jié)
本文實(shí)例講述了PHP實(shí)現(xiàn)的簡(jiǎn)單對(duì)稱(chēng)加密與解密方法。分享給大家供大家參考,具體如下:
方法一: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)));
}
方法四:
/**
* 簡(jiǎn)單對(duì)稱(chēng)加密
* @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));
}
/**
* 簡(jiǎn)單對(duì)稱(chēng)解密
* @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)于加密解密感興趣的朋友還可以參考本站在線(xiàn)工具:
文字在線(xiàn)加密解密工具(包含AES、DES、RC4等):
http://tools.jb51.net/password/txt_encode
MD5在線(xiàn)加密工具:
http://tools.jb51.net/password/CreateMD5Password
在線(xiàn)散列/哈希算法加密工具:
http://tools.jb51.net/password/hash_encrypt
在線(xiàn)MD5/hash/SHA-1/SHA-2/SHA-256/SHA-512/SHA-3/RIPEMD-160加密工具:
http://tools.jb51.net/password/hash_md5_sha
在線(xiàn)sha1/sha224/sha256/sha384/sha512加密工具:
http://tools.jb51.net/password/sha_encode
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《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ì)有所幫助。
- php對(duì)稱(chēng)加密算法示例
- php中簡(jiǎn)單的對(duì)稱(chēng)加密算法實(shí)現(xiàn)
- PHP對(duì)稱(chēng)加密算法(DES/AES)類(lèi)的實(shí)現(xiàn)代碼
- PHP對(duì)稱(chēng)加密函數(shù)實(shí)現(xiàn)數(shù)據(jù)的加密解密
- ThinkPHP實(shí)現(xiàn)的rsa非對(duì)稱(chēng)加密類(lèi)示例
- PHP封裝的非對(duì)稱(chēng)加密RSA算法示例
- PHP基于openssl實(shí)現(xiàn)的非對(duì)稱(chēng)加密操作示例
- PHP基于mcript擴(kuò)展實(shí)現(xiàn)對(duì)稱(chēng)加密功能示例
相關(guān)文章
PHP JSON出錯(cuò):Cannot use object of type stdClass as array解決方法
這篇文章主要介紹了PHP JSON出錯(cuò):Cannot use object of type stdClass as array解決方法,需要的朋友可以參考下2014-08-08
PHP socket 模擬POST 請(qǐng)求實(shí)例代碼
這篇文章主要介紹了 PHP 使用socket 模擬POST的方法,結(jié)合實(shí)例分析了sockets 模擬 POST 常用技巧,需要的朋友可以參考下2016-07-07
Could not load type System.ServiceModel.Activation.HttpModul
本文章來(lái)詳細(xì)介紹關(guān)于Could not load type System.ServiceModel.Activation.HttpModule from assembly System.ServiceModel解決辦法,有需要的朋友可參考2012-12-12
php的POSIX 函數(shù)以及進(jìn)程測(cè)試的深入分析
本篇文章是對(duì)php的POSIX函數(shù)以及進(jìn)程測(cè)試進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06
php字符串比較函數(shù)用法小結(jié)(strcmp,strcasecmp,strnatcmp及strnatcasecmp)
這篇文章主要介紹了php字符串比較函數(shù)用法,結(jié)合實(shí)例形式分析了php針對(duì)字符串的比較、排序等操作相關(guān)技巧與注意事項(xiàng),需要的朋友可以參考下2016-07-07
PHP對(duì)京東聯(lián)盟CPS的API調(diào)用
這篇文章介紹了PHP調(diào)用京東聯(lián)盟API的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-07-07
PHP實(shí)現(xiàn)的限制IP投票程序IP來(lái)源分析
這篇文章主要介紹了PHP實(shí)現(xiàn)的限制IP投票程序,針對(duì)投票程序中客戶(hù)端IP的判斷方法進(jìn)行了深入分析,并給出了偽造IP的方法供大家參考了解,需要的朋友可以參考下2016-05-05
兩種php去除二維數(shù)組的重復(fù)項(xiàng)方法
這篇文章主要介紹了兩種php去除二維數(shù)組的重復(fù)項(xiàng)方法,大家可以進(jìn)行比較看哪一種更適合自己,需要的朋友可以參考下2015-11-11
PHP實(shí)現(xiàn)的封裝驗(yàn)證碼類(lèi)詳解
本篇文章是對(duì)PHP實(shí)現(xiàn)的封裝驗(yàn)證碼類(lèi)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06

