2

ハッシュ関数を使用してハッシュ文字列を作成する必要があるプロジェクトに取り組んでいます。このハッシュ文字列は、6 ~ 13 文字 (固定長) で構成される一意である必要があります。

データベースを使用してデータを保存するため、レコードごとに一意の ID があります。この一意の ID を使用してハッシュ文字列を作成します (結果のハッシュ文字列の一意性を実現するため)。

このハッシュ文字列は、有効な文字 (0-9 az AZ) のみで構成される必要があります。

この目標を達成するには、どのハッシュ関数を使用する必要がありますか? このようなハッシュ文字列を生成するにはどうすればよいですか?

後で追加: この文字列を生成してユーザーに渡したいので、ユーザーは後で戻ってエントリを編集できます。他のアイデアは受け入れられます。

4

3 に答える 3

2

クリプトを使用:

$hash = crypt("somevaluetohash", $uniqueid);

一意の ID はソルトであるため、ID に応じて異なる値を生成できます。したがって、あるユーザーが「somevaluetohash」というパスワードを持っていて、別のユーザーが同じパスワードを持っていた場合、最後のハッシュは同じではありません。

于 2010-07-05T08:59:22.983 に答える
0

それは本当に暗号チェックサムである必要がありますか?または、より単純なチェックサムが適していますか?データベースが提供する主キー自体は適切ではありませんか?

最も単純なcrc32から最も高度なsha512まで、多くのオプションがあります。

ただし、特定のアプリケーション(ファイルシステムのハッシュ、またはいくつかのメトリックを使用した近くのオブジェクトの検索など)に対してこれを行う場合は、問題をさらに指定する必要があります。

于 2010-07-05T09:09:05.037 に答える
0
<?php
  $id;
  $hash_full = md5($id); //hash('sha256', $id);
  $hash_cropped = substr($hash_full, 0, 6);
?>

他のハッシュ アルゴリズムにはhash()を使用します。

しかし、このハッシュは何のために必要なのでしょうか? 私にとって、ID からハッシュを生成することはあまり意味がありません。代わりに ID を使用することはできませんか?

于 2010-07-05T08:52:49.547 に答える