定義
バージョン8.3の新機能。
構文
$hexHash の構文は次のとおりです。
{ $hexHash: { input: <expression>, algorithm: <string> } }
動作
$hexHash は、大文字の 16進数文字列を返します。出力の長さはアルゴリズムによって異なります。
アルゴリズム | 出力の長さ(文字) |
|---|---|
| 32 |
| 64 |
| 16 |
input が null または未定義に解決されるか、欠落しているフィールドを参照する場合、$hexHash は null を返します。
input が UTF-8 string または BinData 以外のタイプに解決される場合、$hexHash はエラーを返します。
algorithm が許容値の 1 つではない場合、$hexHash はエラーを返します。
重要
MD5 は暗号化された安全なアルゴリズムではないため、セキュリティに注意が必要なアプリケーションには適していません。機密データをハッシュしている場合は、代わりに "sha256" を使用します。
MD5 も FIPSモードでは無効になっています。配置が FIPSモードを有効にして実行されている場合は、代わりに "sha256" または "xxh64" を使用します。
例
次の例では、この document で files という名前のコレクションを使用します。
db.files.insertMany( [ { _id: 1, filename: "report.pdf" } ] )
フィールド値のハッシュ
次の例では、filenameフィールドの SHA-256 16 進ハッシュを計算します。
db.files.aggregate( [ { $project: { filename: 1, hexHash: { $hexHash: { input: "$filename", algorithm: "sha256" } } } } ] )
[ { _id: 1, filename: 'report.pdf', hexHash: '6466E450A16B77B865C5829D6B6C56D9F892956475642DBEB9CCC4340FE01B15' } ]
hexHashフィールドには、SHA-256 ハッシュが 64 文字の大文字16進数文字列として含まれます。別のアルゴリズムを使用するには、algorithm の値を変更します。例、"xxh64" は 16 文字の string を生成します。
Null または欠落している input
input が null であるか、input が欠落しているフィールドを参照している場合、$hexHash は null を返します。
db.aggregate( [ { $documents: [ { val: null }, {} ] }, { $project: { hexHash: { $hexHash: { input: "$val", algorithm: "sha256" } } } } ] )
[ { hexHash: null }, { hexHash: null } ]