php之Aes加密案例講解
在項(xiàng)目中,尤其是pc端的時候,我們在用戶登錄后會給前端返回一個標(biāo)識,來判斷用戶是否登錄,這個標(biāo)識大多數(shù)都是用戶的id
但是這里存在很大的弊端,那就是這個值可以修改,假如說把我這個值一修改,我就可以獲取到修改的用戶的所有信息,可怕吧!
那么今天就使用aes進(jìn)行加密處理一下
<?php
namespace app\api\controller;
/**
* aes 加密 解密類庫
* Class Aes
* @package app\common\lib
*/
class Aes {
private $key = null;
/**
*
* @param $key 密鑰
* @return String
*/
public function __construct() {
// 需要小伙伴在配置文件app.php中定義aeskey
$this->key = '1234567891112121';
}
/**
* 加密
* @param String input 加密的字符串
* @param String key 解密的key
* @return HexString
*/
public function encrypt($input = '') {
$size = mcrypt_get_block_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_ECB);
$input = $this->pkcs5_pad($input, $size);
$td = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_ECB, '');
$iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
mcrypt_generic_init($td, $this->key, $iv);
$data = mcrypt_generic($td, $input);
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
$data = base64_encode($data);
return $data;
}
/**
* 填充方式 pkcs5
* @param String text 原始字符串
* @param String blocksize 加密長度
* @return String
*/
private function pkcs5_pad($text, $blocksize) {
$pad = $blocksize - (strlen($text) % $blocksize);
return $text . str_repeat(chr($pad), $pad);
}
/**
* 解密
* @param String input 解密的字符串
* @param String key 解密的key
* @return String
*/
public function decrypt($sStr) {
$decrypted= mcrypt_decrypt(MCRYPT_RIJNDAEL_128,$this->key,base64_decode($sStr), MCRYPT_MODE_ECB);
$dec_s = strlen($decrypted);
$padding = ord($decrypted[$dec_s-1]);
$decrypted = substr($decrypted, 0, -$padding);
return $decrypted;
}
}
這是一個aes的工具類。注意一下,這個值需要我們來自改,而且是16位
這樣我們用戶在登錄時會把id返回給前端
首先在控制器引入
然后進(jìn)行實(shí)例化
用戶在登錄成功后我們把這個值給加密返回前端
這個u_id就是加密后的值
然后我們在comment文件設(shè)置這倆個方法,這倆個方法是對參數(shù)進(jìn)行統(tǒng)一處理,那么我么那就在這里判斷一下,凡是用到用戶id的接口把用戶id進(jìn)行解密即可
到此這篇關(guān)于php之Aes加密案例講解的文章就介紹到這了,更多相關(guān)php之Aes加密內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
php示例詳解Constructor Prototype Pattern 原型模式
原型模式是一種創(chuàng)建者模式,其特點(diǎn)在于通過“復(fù)制”一個已經(jīng)存在的實(shí)例來返回新的實(shí)例,而不是新建實(shí)例。2015-10-10
thinkphp中字符截取函數(shù)msubstr()用法分析
這篇文章主要介紹了thinkphp中字符截取函數(shù)msubstr()用法,結(jié)合實(shí)例形式較為詳細(xì)的分析了thinkPHP中字符截取函數(shù)msubstr()的功能、定義使用技巧與注意事項(xiàng),需要的朋友可以參考下2016-01-01
PHP curl模擬登錄帶驗(yàn)證碼的網(wǎng)站
最近接了個項(xiàng)目,其中有需求是要登錄帶驗(yàn)證碼的網(wǎng)站,獲取數(shù)據(jù),但是我們不可能人為的一直去記錄數(shù)據(jù),想通過自動采集的方式進(jìn)行,下面小編給大家?guī)淼南嚓P(guān)代碼,對php curl 模擬登錄帶驗(yàn)證碼的網(wǎng)站感興趣的朋友一起學(xué)習(xí)吧2015-11-11

