この記事で皆さんに共有した内容は、PHP におけるトークン生成の分析に関するものであり、一定の参考価値がありますので、困っている友人は参考にしてください。
#バックグラウンド多くの場合、ユーザーのログイン後の認証識別子などの識別子としてトークンを使用する必要があります。実装方法md5メソッド:$v = 1; // 自己定义的 需要hash 的value 值 $key = mt_rand(); // 这里用 随机串作为key $hash = md5($key . $v . mt_rand() . time()); echo $hash;
b63426a38f86b726ce0d327d48e47376 あまり気持ち良くないし、強迫性障害の私には耐えられないit.
$v = 1; $key = mt_rand(); $hash = md5($key . $v . mt_rand() . time()); $token = base64_encode($hash); echo $token;
MWQyMjE2NmI3NDA1MmRjZTQwOTQzZDZjMWU1OTE5OGU= もう少し快適に見えますが、十分ではありません。一方、WeChat の openid は一般的に= 記号はありません
##Optimization
$v = 1; $key = mt_rand(); $hash = md5($key . $v . mt_rand() . time()); $token = str_replace('=', '', base64_encode($hash)); echo $token;
実行結果:
Yzg4MWU0OTQ0MTRiZTI0YWYwMDJjOTYyODBkNjFmMTM = 番号はなくなり、より快適になりましたが、長すぎます。WeChat の openid は次のとおりです。そんなに長くない
ハッシュを変更して試してください
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;
短いですが、 / サインインします。多くの場合、get で渡すと URL コード化されます。URL コードの後は、次のようになります。7pn0pWzO+/TOoISNtDaewa4CyuXw
ですが、これは明らかに私たちが望んでいることではありません続行最適化するために
$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
今はURLコードを書く方法がわかりませんが、より快適に見えます。今はこれを使用しています...
関連する推奨事項:
php キュー処理: php メッセージ キューの実装原理 (画像とテキスト) PHP の抽象クラスと抽象メソッドを理解するにはどうすればよいですか? (コード付き)以上がPHPトークンを生成するにはどうすればよいですか? PHP でのトークン生成の分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。