カテゴリ:

文字列とバイナリ関数 (暗号化ハッシュ)

SHA1 , SHA1_HEX

160ビットの SHA-1メッセージダイジェストを含む40文字の16進数でエンコードされた文字列を返します。

これらの関数は同義語です。

構文

SHA1(<msg>)

SHA1_HEX(<msg>)
Copy

引数

msg

ハッシュされるメッセージの文字列式。

戻り値

戻り値のデータ型はVARCHARです。

使用上の注意

  • 関数の SHA1 ファミリーは、主に他のシステムとの下位互換性のために提供されています。より安全な暗号化のために、 SHA2 ファミリーの関数の使用をお勧めします。

  • この関数は、復号化する必要のあるメッセージを暗号化するためには使用しないでください。この関数には、対応する復号化関数がありません。(出力の長さは、入力の長さに依存しません。出力には、入力からのすべての情報を保持するための十分なビットがあるとは限らないため、有効な可能性があるすべての入力を復号化する関数を作成することはできません。)

    この関数は、データ破損を検出するためのチェックサムの計算など、他の用途を目的としています。

    データを暗号化および復号化する必要がある場合は、次の関数を使用します。

SELECT sha1('Snowflake');

------------------------------------------+
            SHA1('SNOWFLAKE')             |
------------------------------------------+
 fda76b0bcc1e87cf259b1d1e3271d76f590fb5dd |
------------------------------------------+
Copy

出力のデータ型は文字列(VARCHAR)で、 VARCHAR 列に保存できます。

テーブルを作成して入力します。

CREATE TABLE sha_table(
    v VARCHAR, 
    v_as_sha1 VARCHAR,
    v_as_sha1_hex VARCHAR,
    v_as_sha1_binary BINARY,
    v_as_sha2 VARCHAR,
    v_as_sha2_hex VARCHAR,
    v_as_sha2_binary BINARY
    );
INSERT INTO sha_table(v) VALUES ('AbCd0');
UPDATE sha_table SET 
    v_as_sha1 = SHA1(v),
    v_as_sha1_hex = SHA1_HEX(v),
    v_as_sha1_binary = SHA1_BINARY(v),
    v_as_sha2 = SHA2(v),
    v_as_sha2_hex = SHA2_HEX(v),
    v_as_sha2_binary = SHA2_BINARY(v)
    ;
Copy

クエリと出力は次のとおりです。

SELECT v, v_as_sha1, v_as_sha1_hex
  FROM sha_table
  ORDER BY v;
+-------+------------------------------------------+------------------------------------------+
| V     | V_AS_SHA1                                | V_AS_SHA1_HEX                            |
|-------+------------------------------------------+------------------------------------------|
| AbCd0 | 9ddb991863d53b35a52c490db256207c776ab8d8 | 9ddb991863d53b35a52c490db256207c776ab8d8 |
+-------+------------------------------------------+------------------------------------------+
Copy