現在のデータベースの設定を見ていて、7つの異なるテーブルにある愚かな量のユーザ完全なホームアドレスで構成されています。人々は、例えば、スペースの有無にかかわらず、郵便番号をタイプすることができる)。PHP/MySQL:共通のデータをハッシュする
問題のアプリケーションはまだ完全には完結していませんが、まだライブではないため、テーブルにばかげた量のデータがある場合は、6か月以内に変更するとかなり簡単になります。
ハッシュアルゴリズムを使用して、毎回完全なものを挿入するのではなく、ユーザーの自宅のアドレスを扱うコード/データベースをリファクタリングするのに2,3時間を費やす価値がありますか? これにより、一貫性が大幅に向上し、ユーザーがアドレスハッシュを共有できるようになるため、アドレスで検索することも簡単にできます。
現在、この方法を使用してユーザーエージェントを格納しています - 実際のUA文字列を移動するには、UA文字列をハッシュして独自の別のテーブルに格納し、代わりに必要なテーブルにUAハッシュを格納します(下記参照)、SHA1を使用します。しかし、非衝突ベースのハッシュの点で私にはどのようなオプションがありますか?中小規模の生産環境でできるだけ早く実行することも確認されていますか?
これは、二つの明白なもの、MD5/SHA1は100%が起こっていない、と私は本当に、残念ながらそれよりも大きなハッシュでは動作しないことを意味します。 記録のために、パスワード暗号化のために私はpassword_hash
を使用します。
明らかに、ユーザーの自宅の住所はユーザーエージェントの文字列よりも重要です。なぜなら、私はあなたに何をお勧めするのかを尋ねています。
おかげであなたは不思議の人のために
"非衝突ベースのハッシング" - あなたはどういう意味ですか? 2つの異なる文字列のハッシュは決して等しくないはずですか? –
@PaulSpiegel正しいですが、MD5/SHA1に該当しない場合があります。 [Wiki - その他の情報](https://en.wikipedia.org/wiki/Collision_attack) [MD5 Collision Example](http://www.mathstat.dal.ca/~selinger/md5collision/)と[SHA1 Collision](https://www.theregister.co.uk/2017/02/23/)も参照してください。 google_first_sha1_collision /) – DomLip
私はエキスパートではありませんが、これらの関数はあらかじめ定義された文字列にしか存在しません。しかし、なぜプライマリキーを参照として使用しないのですか? –