指定された暗号化キーを使用して指定された値を暗号化し、LONG BINARY 値を返します。
ENCRYPT( string-expression, key [, algorithm [ format ] ] )
algorithm : 'AES' | 'AES256' | 'AES_FIPS' | 'AES256_FIPS' [ format ] format: ( FORMAT=RAW [;padding ] ) [ initialization-vector ] ) padding: PADDING=PKCS5 | ZEROES | NONE ]
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 認定のアルゴリズムのいずれかを指定できます。
RSA 認定の暗号化と FIPS 認定の暗号化は、すべてのプラットフォームで使用できるわけではありません。各プラットフォームでサポートされている暗号化方法については、 http://www.sybase.com/detail?id=1061806 を参照してください。
algorithm が指定されない場合、デフォルトで AES が使用されます。データベースサーバの起動時に -fips サーバオプションが使用された場合は、AES の代わりに AES_FIPS がデフォルトとして使用されます。
FORMAT=RAW このオプションのパラメータは、データをロー形式で暗号化します。初期化ベクトルパラメータが必要となります。
padding このオプションのパラメータは、使用する埋め込みのタイプを指定します。padding が指定されない場合、デフォルトで PKCS5 が使用されます。
PKCS5 PKCS#5 アルゴリズムを使用してデータが埋め込まれます。出力される (暗号化) データは、入力データより 1 ~ 16 バイト長くなります。
ZEROES データにゼロ (0) が埋め込まれます。出力される (暗号化) データは、入力データより 0 ~ 15 バイト長くなります。この出力を複合化した場合は、ゼロ (0) が埋め込まれます。
NONE データへの埋め込みは行われません。入力するデータは、暗号ブロック長 (16 バイト) の倍数である必要があります。
initialization-vector この初期化ベクトルパラメータは、FORMAT=RAW を指定した場合に必要となります。文字列の長さは 16 バイト以内です。16 バイト未満の値には、0 が埋め込まれます。この文字列を NULL に設定することはできません。
LONG BINARY
この関数が返す LONG BINARY 値は、string-expression の入力値より最大で 31 バイト長くなります。この関数によって返される値は判読できません。DECRYPT 関数を使用して、ENCRYPT 関数で暗号化された string-expression を復号化できます。string-expression を正常に復号化するには、データの暗号化に使用したのと同じ暗号化キーとアルゴリズムを使用します。不正な暗号化キーを指定した場合は、エラーが生成されます。キーを紛失すると、データにアクセスできなくなり、そこからのリカバリも不可能になります。
暗号化された値をテーブルに格納する場合は、文字セット変換がデータに対して実行されないように、カラムを BINARY または LONG BINARY にしてください。
FORMAT=RAW を指定した場合、データは未加工の暗号化を使用して暗号化されます。暗号化キー、初期化ベクトル、オプションで埋め込みフォーマットを使用して指定してください。データを複合化するときに、同じ値が必要になります。DECRYPT 関数を使用した場合でも、データベース外で複合化が実行されます。
データベースサーバ内でのみデータの暗号化と複合化を行う場合は、初期化ベクトルと埋め込みを指定しなければなりませんが、複合化中に暗号化キーを検証できないため、未加工の暗号化の使用はおすすめしません。
SQL/2008 ベンダー拡張。
次のトリガは、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; |
次の SELECT 文は、未加工の暗号化を使用して SensitiveData テーブルの binary_data カラムを暗号化します。暗号化されるデータにゼロ (0) が埋め込まれます。
SELECT ENCRYPT( binary_data, 'TheEncryptionKey', 'AES(format=raw;padding=zeroes)', 'ThisIsTheIV'), LENGTH(binary_data) FROM SensitiveData; |
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2013, SAP AG or an SAP affiliate company. - SAP Sybase SQL Anywhere 16.0 |