違いは、それらが生成する長さです。
crc32() は 32 ビット コードを返します
sha1() は 128 ビットのコードを返します
md5() は 160 ビットコードを提供します
そうですか?? またはそれらの間にさらに違いはありますか?
違いは、それらが生成する長さです。
crc32() は 32 ビット コードを返します
sha1() は 128 ビットのコードを返します
md5() は 160 ビットコードを提供します
そうですか?? またはそれらの間にさらに違いはありますか?
それらはそれぞれ異なる暗号化ハッシュ関数を実装し、各ハッシュ関数は異なるサイズのハッシュを生成します。ここで示した 3 つの関数の主な違いは、sha1とmd5が実際には暗号的に安全であることを意図していることです。crc32 (crc は巡回冗長検査の略) 関数は暗号関数ではなく、ファイルの整合性をチェックするために使用されるハッシュを生成することを目的としています (主にダウンロード中にファイルが破損したかどうかを判断するため)。
補足:実際の暗号処理 (パスワードのハッシュなど) にはmd5やsha1を使用しないでください。これらはどちらもひどく壊れています (evernote や、この古いアルゴリズムを使用して失敗した他の会社に聞いてください)。代わりにphp crypt() 関数を使用し、SHA-256 または SHA-512 (256 より優れている)、またはフグを使用します。そして、常にあなたのハッシュをソルトします...
length
異なるだけでなく、データに対して異なるアルゴリズムを使用していると思いencrypt
ます。
PHP での暗号の使用は単純ですが、無料というわけではありません。まず、暗号化するデータによっては、スペースを節約するためにデータベースに 160 ビット値ではなく 32 ビット値を格納する理由がある場合があります。次に、暗号の安全性が高いほど、ハッシュ値を配信するための計算時間が長くなります。md5() の生成を頻繁に行う必要がある場合、ボリュームの多いサイトでは速度が大幅に低下する可能性があります。
crc32は、「整数としての str の crc32 チェックサム」を生成します。- 何かの整合性を迅速に検証することを目的としており、ネットワーク伝送エラーなどの偶発的な変更を検出するために広く使用されています。
例をカバーするphpのドキュメントを読む方が良いでしょう:
md5() や sha1() などの一般的なハッシュ関数がパスワードに適さないのはなぜですか? MD5、SHA1、SHA256 などのハッシュ アルゴリズムは、非常に高速かつ効率的に設計されています。最新の技術とコンピューター機器により、元の入力を決定するために、これらのアルゴリズムの出力を「総当たり」することは簡単になりました。
Anmd5
は 128 ビット、asha1
は 160 ビットです。質問では、これが逆になっています。
md5
との主な違いsha1
は、衝突の例sha1
がまだ見つかっていないことです。つまり、2 つの異なる入力に使用する場合md5
、同じハッシュを取得することができます。ではsha1
ありません。それ以外は、異なるアルゴリズムを実装していますが、たとえば、パスワードの保存に一般的に使用されているにもかかわらず、どちらもパスワードの保存には適していません。
crc32() は、暗号化の目的で使用することを意図していません。その目的は、ハッシュを非常に迅速に生成することです。そのため、それが主な関心事である場合に使用する必要があります。通常はすぐに役立つハッシュが必要です。このため、ネットワーク機器で使用されています。
md5() と sha1() はどちらも暗号化ハッシュです。つまり、ハッシュ値が何であるかだけを指定すると、特定のハッシュを生成するメッセージを見つけるのが非常に難しいなど、非常に優れた特性を持つことを意図しています。ただし、sha1 は md5 よりも安全で最新です。実際、セキュリティに関心がある場合は、md5 の使用は非推奨と見なす必要があります。
また、パスワードのハッシュに特別なものを連結してソルト化することを忘れないでください。または、「レインボー テーブル」と呼ばれる事前にハッシュされた一般的なパスワードの大きなリストを使用して、ハッシュが何に対応しているかを把握し、ユーザー アカウントをハッキングすることもできます。
これらはハッシュ関数と呼ばれます。
http://en.wikipedia.org/wiki/Hash_function - さまざまなタイプのハッシュ関数について説明します
それらは内部でまったく異なる働きをします。
crc32
注:暗号化の目的で使用しないでください。sha1
その使用は迅速なハッシュのためであり、またはほど安全ではありませんmd5
。
主な違いは、生成されるハッシュの長さです。
CRC32 is, evidently, 32 bits,
sha1() returns a 128 bit value,
and md5() returns a 160 bit value.
衝突を避けるときに重要です。