3

このページを読みました...

http://www.php.net/manual/en/function.hash.php

MD5は32文字の長さで、sha1は40文字です。

$str = 'apple';

sha1 string d0be2dc421be4fcd0172e5afceea3970e2f3d940
md5 string 1f3870be274f6c49b3e31a0c6728957f

オプションのraw_outputがTRUEに設定されている場合でも、代わりにmd5ダイジェストが長さ16のrawバイナリ形式で返されます。

8文字以下のハッシュを作成する関数を探しています。

更新:3つの理由で小さい文字列が必要です:

1)MySQLアーカイブテーブルタイプは、8文字を超える列のインデックスを許可していないようです

2)小さいキーが好きなredisのようなKey-Valueユーティリティを使用することを計画しています

3)ここではセキュリティは問題ではありません。「国+電話会社+オペレーター」のような列をハッシュしています

4

3 に答える 3

9

このcrc32メソッドを使用してハッシュを作成できます。8文字の長さのハッシュが作成されます。

$hash = hash('crc32', $input, FALSE);

この方法は完全に暗号化攻撃にさらされるため、非常に注意してください。これをいかなる種類のセキュリティチェッキングにも使用しないでください。

于 2012-06-15T08:19:07.523 に答える
0

私に任せておくと、8文字を生成する独自のカスタム「暗号化」アルゴリズムを作成することをお勧めします。たとえば、md5、SHA1、SHA512を実行し、2:3:3の比率で組み合わせて、独自のカスタムコードを取得することもできます。

于 2012-06-15T08:26:19.683 に答える
-3
function short_hash($value, $length=8) {
    return substr(md5($value), 0, $length);
}
于 2012-06-15T08:12:33.570 に答える