2

私のデータベースの作成にはいつも戸惑いました。Encrypted with md5 saltパスワードの正しいデータ型は何ですか?

私はVarCharを使用しています。しかし、私はに移動するように言われましたが、説明をchar与えられませんでしたか?

また、これはベストプラクティスではないことはわかっていますが、パスワードを保持するためのデータベースをVarchar(255)として取得しています。それを持っているのに最適な長さも何でしょうか?md5が常に同じ長さの文字列を返すのか、それとも異なる可能性があるのか​​、はっきりとはわかりません。

4

3 に答える 3

2

あなたは最初の質問です:

VARCHAR

  • 末尾の空白は保持されます。(MySQL 5.0.3以降のみ。)
  • 最小限のストレージオーバーヘッド。17文字のレコードは、17文字のスペースしか使用しません。
  • この列を検索するときのSELECTが遅くなります。

CHAR

  • 末尾の空白は常に削除されます。
  • すべてのレコードは一定量のスペースを占有します-あなたの場合は19文字です。17文字のレコードは、2バイトのストレージを浪費します。
  • この列を検索するときのSELECTの高速化。

ソース

于 2012-12-14T03:05:07.977 に答える
1

MD5は常に32文字を返すため、保存時にCHAR(32)を使用すると効率的です。ソルトを使用している場合でも、その数の文字にハッシュされます。常に最も適切な文字サイズを選択する必要があります。

于 2012-12-14T03:00:45.623 に答える
1

パスワードソルトを変更する場合(同時に暗号化をbcyrptなどの安全なものに変更しないでください)。

md5が危険にさらされている場合、md5のセットアップを「微調整」しようとするのは無駄な努力のようです。

質問の他のあなたの部分に関して;

> A CHAR(x) column can only have exactly x characters. 
> A VARCHAR(x)column can have up to x characters.

したがって、ソルトが「固定」されている場合(つまり、常に6文字)、パフォーマンスを向上させるために「CHAR」が必要です。ただし、saltが可変(つまり5〜6文字)の場合は、VARCHARを使用する必要があります。

于 2012-12-14T03:00:46.050 に答える