[解決済み] MySQLにSHA1ハッシュ値を保存する
2022-04-30 14:54:22
質問内容
SHA1ハッシュの結果をMySQLデータベースに格納したいときに発生した簡単な質問があります。
はどれくらいの長さにすべきでしょうか? VARCHAR フィールドにハッシュの結果を格納することができますか?
どのように解決するのですか?
私なら
VARCHAR
は可変長データ用ですが、固定長データ用ではありません。なぜなら、SHA-1 値は
常に
160ビット長であるため
VARCHAR
が無駄になるだけです。
固定長フィールドの長さ分の1バイトを追加したものです。
.
そして、私は
SHA1
が返してくる。なぜなら、1文字あたり4ビットしか使っていないので、160/4=40文字が必要になるからです。しかし、1文字あたり8ビットを使うなら、160/8 = 20文字の長いフィールドが必要になるだけです。
そこで、おすすめなのが
BINARY(20)
とのことです。
UNHEX
機能
を変換する必要があります。
SHA1
の値をバイナリに変換する。
のストレージ要件を比較しました。
BINARY(20)
と
CHAR(40)
.
CREATE TABLE `binary` (
`id` int unsigned auto_increment primary key,
`password` binary(20) not null
);
CREATE TABLE `char` (
`id` int unsigned auto_increment primary key,
`password` char(40) not null
);
100万枚のレコードを持つ
binary(20)
は44.56M、一方
char(40)
は64.57Mを取ります。
InnoDB
エンジンです。
関連
-
MysqlからElasticsearchにデータを同期させる方法を説明します。
-
MySQLでテーブルを削除します。親行が削除または更新できません: 外部キー制約に失敗しました。
-
[解決済み] MySQLでdatetimeとtimestampのどちらのデータ型を使用すべきですか?
-
[解決済み] MySQLでコマンドラインを使用してSQLファイルをインポートするにはどうすればよいですか?
-
[解決済み] ブーリアン値を格納するために使用するMySQLデータ型
-
[解決済み] MySQLで'insert if not exists'を行うにはどうしたらいいですか?
-
[解決済み] MySQL型テキストの最大長
-
[解決済み】PHPパスワードのハッシュとソルトの安全性について
-
[解決済み】ホスト 'xxx.xx.xxx.xxx' がこのMySQLサーバーへの接続を許可されていない。
-
[解決済み】MySQLでお金の値を格納するための最適なデータ型
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
MySqlの整数インデックスと文字列インデックスの失敗または暗黙の変換問題
-
mysqlにおけるvarcharの日付比較とソートの実装
-
MySQL サービスとデータベース管理
-
MySQLで正規表現を使う 詳細
-
[解決済み】マルチパート識別子をバインドできませんでした。
-
[解決済み】ValueError: 値の長さがインデックスの長さと一致しない|Pandas DataFrame.unique()
-
[解決済み] ユニークなテーブル/エイリアスではない
-
[解決済み] ユーザー 'root'@'localhost' (パスワード: YES を使用) のアクセス拒否 - 特権がない?
-
[解決済み] MySQLで複数のカラムに一意制約を指定するには?
-
[解決済み] MySQL で特定のカラム名を持つすべてのテーブルを見つけるにはどうすればよいですか?