国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > PHP > 正文

關于PHP中token的生成的解析

2020-03-22 17:57:15
字體:
來源:轉載
供稿:網友
這篇文章給大家分享的內容是關于PHP中token的生成的解析,有一定的參考價值,有需要的朋友可以參考一下。

 

背景

很多時候我們需要用 token 來作為一些標識, 比如: 一個用戶登錄后的認證標識.

實現方式md5 的方式:
$v = 1; // 自己定義的 需要hash 的html' target='_blank'>value 值$key = mt_rand(); // 這里用 隨機串作為key$hash = md5($key . $v . mt_rand() . time());echo $hash;

執行結果: b63426a38f86b726ce0d327d48e47376 看著不是很舒服, 作為強迫癥的我 是受不了的.

md5 + base64 的方式
$v = 1;$key = mt_rand();$hash = md5($key . $v . mt_rand() . time());$token = base64_encode($hash);echo $token;

執行結果: MWQyMjE2NmI3NDA1MmRjZTQwOTQzZDZjMWU1OTE5OGU= 看著稍微舒服些了, 但是還不夠好, 反觀微信的 openid , 一般是不會有后面的 = 號的

優化

$v = 1;$key = mt_rand();$hash = md5($key . $v . mt_rand() . time());$token = str_replace( = , , base64_encode($hash));echo $token;

執行結果: Yzg4MWU0OTQ0MTRiZTI0YWYwMDJjOTYyODBkNjFmMTM 這下沒有 = 號了, 舒服了些, 但是又太長了, 微信的 openid 可沒這么長

換種 hash 試試sha1 + base64 的方式
$v = 1;$key = mt_rand();$hash = hash_hmac( sha1 , $v . mt_rand() . time(), $key, true);$token = str_replace( = , , base64_encode($hash));echo $token;

執行結果: 7pn0pWzO+/TOoISNtDaewa4CyuXw 是短些了, 可是里面有 +/ 號, 很多情況下用 get 傳遞時會被 urlcode, urlcode 過后就這樣了 7pn0pWzO%2b%2fTOoISNtDaewa4CyuXw, 這顯然不是我們想要的

繼續優化
$v = 1;$key = mt_rand();$hash = hash_hmac( sha1 , $v . mt_rand() . time(), $key, true);$token = str_replace( = , , strtr(base64_encode($hash), +/ , -_ echo $token;

執行結果: JM9AkY7SAIROrJ7fhjIU2ApbMsI 這下不會 urlcode了, 看著也舒服些了, 我目前是這樣用的...

但是這是不是最優方案呢?

目前沒發現什么更好的方案, 只是說出了我認為的比較好的方案

相關推薦:

php隊列處理:php消息隊列實現原理(圖文)

 

如何理解PHP中抽象類和抽象方法?(附代碼)

以上就是關于PHP中token的生成的解析的詳細內容,PHP教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 凤山县| 曲周县| 手机| 犍为县| 龙海市| 修文县| 华阴市| 朝阳县| 怀来县| 上栗县| 和政县| 河池市| 咸阳市| 玉龙| 车致| 平遥县| 怀集县| 镇赉县| 鸡东县| 杭锦后旗| 陇川县| 通辽市| 无棣县| 视频| 临沂市| 高尔夫| 昌江| 阳朔县| 黎城县| 大港区| 金昌市| 兰西县| 晴隆县| 集安市| 铜梁县| 根河市| 余庆县| 静乐县| 西平县| 涞源县| 时尚|