私は現在、基本的な認証システムを構築しており、20 文字の長い文字列を生成して にエンコードするユーザー アクティベーション機能を持っていますがsha1
、他のいくつかのシステムを使用して、base64_encode
何が優れているのか、その理由を説明してください。
ありがとうございました
文字列をエンコード/ハッシュするという考えを捨てて、 openssl_random_pseudo_bytesを使用して文字列を生成し、それを使用することができます。
echo bin2hex(openssl_random_pseudo_bytes(10));
出力例:
root@upstairslinux:/var/www# php openssl.php
67b206be9ceef1c4974f
root@upstairslinux:/var/www#
それらはまったく異なります --SHA1
は一方向ハッシュ関数です。つまり、エンコードされた文字列から元の文字列に戻ることはできません。ただし、base64_encode
は双方向のエンコーディング関数です。つまり、 を使用して元の値を取得できますbase64_decode
。
セキュリティに関して言えば、d 値を手に入れた人は誰でもbase64_encode
簡単に解読できることを意味しますが、SHA1
値は力ずくで多くの時間を必要とします。
ランダムな文字列を生成しています。どんな種類のエンコーディングやハッシングもあなたに利益をもたらす可能性は低いです.
sha1
文字列を短くして、必要な文字列を推測しやすくします (非常にわずかに)。
base64
文字列が長くなり、挿入した URL がワードラップによって壊れる可能性が高くなります。