PHPで2chの書き込みIDのような文字列を生成するアルゴリズム!
PHPで2chの書き込みID風のユニークな文字列を生成するアルゴリズムです。
以下のような感じのやつを出力します。
↓
「id:kh9D1A2c」
コメント投稿者の「IPアドレス」と「書き込み時刻」を連結した文字列をsha1-hmacでハッシュ化します。
同じ日付で同じIPアドレスから書き込みをすると、同じIDが生成されるという訳です。
コードは以下の通り。
//初期パラメータ $ip = "192.168.1.1"; $timestamp = "2017-10-06"; $secret = "hogegefugagapiyoyo"; //sha1を使ってハッシュ化 $id_hash = hash_hmac("sha1", $timestamp.$ip, $secret); //base64の形式に変換 $id_base64 = base64_encode($id_hash); //先頭の8文字だけ抜き取る $id = substr($id_base64, 0, 8);
天文学的な確率でIDが被る可能性があると思いますが、まあそれはヨシとします・・。
ハッシュのsecretが他人にバレてしまうとIPアドレスを推測されてしまいそうなので、これは絶対漏らさないようにしたいところです・・。
以上!