33616


パスワードなどのハッシュ値をDBで持とうと思っているのですが、  
通常のデータベースではハッシュ値はどのような型で扱うべきなのでしょうか？

ちなみにオラクル12cを使用しております。  
RAW型で持つのが一般的なのでしょうか？  
それともハッシュ値を16進数表記の文字列にしてCHAR型等で持つべきでしょうか？


CC BY-SA 3.0
2017-03-28T02:58:38.687
33594
2017-05-10T08:24:03.953
2017-03-28T06:47:33.057
12842
question
database
ハッシュ値の持ち方について


用途に依るのではないでしょうか。  
頻繁にもしくは積極的に表示を行うのであればCHAR等の文字列型の方が効率がいいでしょう。  
一致比較を主とするのであればRAW等のバイナリ型の方が効率がいいでしょう。


CC BY-SA 3.0
2017-03-28T03:06:43.753
33595
2017-03-28T03:06:43.753
4236
33594
answer


私ならBASE64なりHEX表記の文字列で格納します。データベース保守ツールはRAW/BLOBデータの扱いに制約があるものが少なくなく、開発言語を問わずRAW/BLOBを扱うのは一手間増える事が多いからです。もちろんデータサイズが増えるなどのデメリットもありますが、格納するのがハッシュ値であるなら最大でも1KB程度に過ぎず、十分に許容できるサイズと考えています。


CC BY-SA 3.0
2017-03-28T06:36:54.610
33599
2017-03-28T06:36:54.610
12774
33594
answer


人力でINSERT、UPDATEするケースを考慮して、16進数表記の文字列にしてCHAR型で持つのが便利かと思います。(`sha512sum`等のコマンドの出力を使えるといった点も考慮して)


CC BY-SA 3.0
2017-03-28T15:57:46.083
33616
2017-03-28T15:57:46.083
20098
33594
answer