0

私は現在、基本的な認証システムを構築しており、20 文字の長い文字列を生成して にエンコードするユーザー アクティベーション機能を持っていますがsha1、他のいくつかのシステムを使用して、base64_encode何が優れているのか、その理由を説明してください。

ありがとうございました

4

3 に答える 3

2

文字列をエンコード/ハッシュするという考えを捨てて、 openssl_random_pseudo_bytesを使用して文字列を生成し、それを使用することができます。

echo bin2hex(openssl_random_pseudo_bytes(10));

出力例:

root@upstairslinux:/var/www# php openssl.php
67b206be9ceef1c4974f

root@upstairslinux:/var/www#
于 2013-03-12T17:07:11.130 に答える
2

それらはまったく異なります --SHA1は一方向ハッシュ関数です。つまり、エンコードされた文字列から元の文字列に戻ることはできません。ただし、base64_encodeは双方向のエンコーディング関数です。つまり、 を使用して元の値を取得できますbase64_decode

セキュリティに関して言えば、d 値を手に入れた人は誰でもbase64_encode簡単に解読できることを意味しますが、SHA1値は力ずくで多くの時間を必要とします。

于 2013-03-12T17:03:50.240 に答える
1

ランダムな文字列を生成しています。どんな種類のエンコーディングやハッシングもあなたに利益をもたらす可能性は低いです.

sha1文字列を短くして、必要な文字列を推測しやすくします (非常にわずかに)。

base64文字列が長くなり、挿入した URL がワードラップによって壊れる可能性が高くなります。

于 2013-03-12T17:05:45.160 に答える