ホームページ  >  記事  >  バックエンド開発  >  PHPトークンを生成するにはどうすればよいですか? PHP でのトークン生成の分析

PHPトークンを生成するにはどうすればよいですか? PHP でのトークン生成の分析

不言
不言オリジナル
2018-07-23 10:22:497034ブラウズ

この記事で皆さんに共有した内容は、PHP におけるトークン生成の分析に関するものであり、一定の参考価値がありますので、困っている友人は参考にしてください。

PHPトークンを生成するにはどうすればよいですか? PHP でのトークン生成の分析

#バックグラウンド

多くの場合、ユーザーのログイン後の認証識別子などの識別子としてトークンを使用する必要があります。

実装方法

md5メソッド:

$v = 1; // 自己定义的 需要hash 的value 值
$key = mt_rand(); // 这里用 随机串作为key
$hash = md5($key . $v . mt_rand() . time());
echo $hash;

実行結果:

b63426a38f86b726ce0d327d48e47376 あまり気持ち良くないし、強迫性障害の私には耐えられないit.

md5 Base64 メソッド

$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;

実行結果:

7pn0pWzO /TOoISNtDaewa4CyuXw

短いですが、 / サインインします。多くの場合、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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。