Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (日本語) » SQL Anywhere サーバ - SQL リファレンス » SQL の使用 » SQL 関数 » SQL 関数 (E ~ O)

 

ENCRYPT 関数 [文字列]

指定された暗号化キーを使用して指定された値を暗号化し、LONG BINARY 値を返します。

構文
ENCRYPT( string-expression, key 
[, algorithm ] 
)
algorithm : 
'AES' 
| 'AES256' 
| 'AES_FIPS' 
| 'AES256_FIPS'
パラメータ
  • string-expression   暗号化されるデータ。この関数にはバイナリ値を渡すこともできます。大文字と小文字を区別しないデータベース定義であっても、パラメータの大文字と小文字は区別されます。

  • key   string-expression の暗号化に使用する暗号化キー。元の値を取得するには、同じキーを使用して値を復号化します。大文字と小文字を区別しないデータベース定義であっても、パラメータの大文字と小文字は区別されます。

    ほとんどのパスワードと同様、最善の方法は、簡単には推測できないキー値を選択することです。キーには最低でも 16 文字の値を選択し、大文字と小文字、数字、文字、特殊文字を組み合わせて使用することをおすすめします。このキーは、データを復号化するたびに必要になります。

    警告

    強力な暗号化が適用されたデータベースの場合、キーのコピーは必ず安全な場所に保管してください。暗号化キーがわからなくなった場合は、Sybase 製品の保守契約を結んでいるサポート・センタに依頼してもデータにはアクセスできません。アクセスできなくなったデータベースは、廃棄して、新しくデータベースを作成する必要があります。

  • algorithm   このオプションのパラメータでは、string-expression が暗号化されるときに使用されるアルゴリズムを指定します。Rijndael は、強力な暗号化に使用されているアルゴリズムです。これは、米国商務省標準技術局 (NIST:National Institute of Standards and Technology) によってブロック暗号のための新しい次世代標準暗号化方式 (AES:Advanced Encryption Standard) として選択された、ブロック暗号化アルゴリズムです。

    FIPS をサポートしているプラットフォームでは、algorithm に FIPS アルゴリズムのいずれかを指定できます。

    algorithm が指定されない場合、デフォルトで AES が使用されます。データベース・サーバの起動時に -fips サーバ・オプションが使用された場合は、AES の代わりに AES_FIPS がデフォルトとして使用されます。

戻り値

LONG BINARY

備考

この関数が返す LONG BINARY 値は、string-expression の入力値より最大で 31 バイト長くなります。この関数によって返される値は判読できません。DECRYPT 関数を使用して、ENCRYPT 関数で暗号化された string-expression を復号化できます。string-expression を正常に復号化するには、データの暗号化に使用したのと同じ暗号化キーとアルゴリズムを使用します。不正な暗号化キーを指定した場合は、エラーが生成されます。キーを紛失すると、データにアクセスできなくなり、そこからのリカバリも不可能になります。

暗号化された値をテーブルに格納する場合は、文字セット変換がデータに対して実行されないように、カラムを BINARY または LONG BINARY にしてください。

注意

FIPS は、すべてのプラットフォームで使用できるわけではありません。サポートされるプラットフォームのリストについては、[external link] http://www.ianywhere.jp/sas/os.html を参照してください。

参照
標準と互換性
  • SQL/2003   コア SQL に含まれない SQL 基本機能。

次のトリガは、user_info テーブルの user_pwd カラムを暗号化します。このカラムにはユーザのパスワードが含まれ、トリガは、パスワード値が変更されるたびに起動します。

CREATE TRIGGER encrypt_updated_pwd
BEFORE UPDATE OF user_pwd
ON user_info
REFERENCING NEW AS new_pwd
FOR EACH ROW
BEGIN
    SET new_pwd.user_pwd=ENCRYPT( new_pwd.user_pwd, '8U3dkA' );
END;