2016-12-31 4 views
1

の名前とCHARのためのVARCHARを使用します。は、なぜ私は以下のスクリプト理由を理解しないパスワード

first_name VARCHAR(20), 
last_name VARCHAR(40) NOT NULL, 
email VARCHAR(60) NOT NULL, 
password CHAR(40) NOT NULL, 

はVARCHARとCHARとして、パスワードなどの名前などを持っている...ので、それを取得する方法のことで、つまり名前が来ます一緒に、名前のように、姓が付属していますが、パスワードは個々です..私は確信していません..

また、MySQLのスクリプトはPythonのコードと同じものですか?

+0

あなたが書いた人に尋ねるべきですが、私の推測では 'password'は実際には文字列ではなくハッシュを含んでいると思います。サンプル値を投稿する必要があります。 –

+0

@DourHighArch大丈夫、たとえば名前がPeter、姓がSmith、電子メールが[email protected]、パスワードがPeter123の場合、長さが変わることがありますが、CHARでは固定されているので、パスワードPeter123は8文字、CHAR(40)は残りの32文字が空白文字であることを意味します。 _しかし私が理解していないのはなぜCHAR/NOT VARCHAR_ –

+0

のパスワードだけです。パスワードが文字列として格納されていて、それが私の推測でない場合には本当です。ハッシュは、すべての文字列で常に同じ長さです。たとえば、 "Peter123"と "supercalifragilisticsexpealidocious"のハッシュは同じ長さになり、パディングもスペースも追加されません。あなたのデータベースにはそれが入っていますか?あなたが作ったものではなく、実際のデータベース値を投稿してください。 –

答えて

2

Varcharは可変長で、Charは固定長です。

電子メールの名前は一般的に長さが異なるため、可変長を使用するのが最善です。必要なだけ多くの記憶域が使用されます。パスワードの長さは一般にアプリケーションによって課される制限/条件に依存し、格納されると固定されます(たとえば、md5の16進文字列などとして保存される)ので、Charデータ型が使用されます。コンテンツが固定サイズの場合、charの方がパフォーマンスが向上します。より多くの場合

、これはsha1ハッシュのように見えるhttp://dev.mysql.com/doc/refman/5.7/en/char.html

1

を参照してください。ハッシュアルゴリズムは、開発者によって初期の年に普及しました。 sha1暗号化されたパスワードは常に固定長で40文字で、sha1は安全でないと考えられています。password_verifypassword_hashの機能が実装されており、内部でblowfishまたはbcrypt(60文字)を使用しています。パスワードの長さが常に固定されている場合は、sha1 CHARのようにパフォーマンスを向上させることができます。

関連する問題