PHPにいくつかの特別なルールを使用してハッシュ文字列を生成する方法は?
-
02-10-2019 - |
質問
ハッシュ関数を使用してハッシュストリングを作成する必要があるプロジェクトに取り組んでいます。このハッシュ文字列は、6〜13文字(固定長)で構成される一意でなければなりません。
データベースを使用してデータを保存するため、各レコードについて一意のIDがあります。この一意のIDを使用してハッシュストリングを作成したい(結果のハッシュストリングの一意性を実現するため)。
有効な文字(0-9 AZ AZ)のみで構成されるために、このハッシュ文字列が必要です。
この目標を達成するためにどのハッシュ機能を使用する必要がありますか?このようなハッシュ文字列を生成するにはどうすればよいですか?
後で追加:この文字列を生成してユーザーに渡したいので、後で戻ってエントリを編集することができます。他のアイデアは受け入れられます。
解決
Cryptを使用してください:
$hash = crypt("somevaluetohash", $uniqueid);
一意のIDは塩であるため、IDに応じて異なる値を生成できます。したがって、あるユーザーが「somevaluetohash」のパスワードを持っていて、別のユーザーが同じものを持っていた場合、終了ハッシュは同じではありません。
他のヒント
<?php
$id;
$hash_full = md5($id); //hash('sha256', $id);
$hash_cropped = substr($hash_full, 0, 6);
?>
使用する ハッシュ() 他のハッシュアルゴリズム用。
しかし、このハッシュは何のために必要ですか?私にとって、IDからハッシュを生成することはあまり意味がありません。代わりにIDを使用できませんか?
本当に暗号化チェックサムである必要がありますか?それとも、よりシンプルなチェックサムが適切ですか?データベースが提供するプライマリキー自体は適していませんか?
最も単純なものから、たくさんのオプションがあります CRC32 最も賢明なものに SHA512.
しかし、特定のアプリケーションのためにこれを行っている場合( ファイルシステムハッシュ, 、 また 近くのオブジェクトを見つける いくつかのメトリックを使用して)、より多くの問題を指定する必要があります。