暗号化データをデータベースに保存する¶
暗号化したデータをデータベースに保存するには、データを UTIL.ENCRYPT(データを暗号化する)関数を使用して暗号化し、データ登録アクション等を使用してデータベースに保存します。
ここでは、UTIL.ENCRYPT 関数を使用して、暗号化データをデータベースに保存する方法を説明します。
参考
暗号化したデータの復号例については 暗号化データをデータベースから復号する を参照してください。
暗号化キー情報を設定する¶
データを暗号化するには事前に '暗号化キー' を設定する必要があります。設定方法は 暗号化キー情報の設定をする を参照してください。
設定した暗号化キー名は UTIL.ENCRYPT 関数で使用します。
暗号化関数を使用する¶
UTIL.ENCRYPT 関数は、第1引数に '暗号化対象値(暗号化したい値)' を指定し、第2引数に設定した '暗号化キー名' を指定します。
![]()
ヒント
- どちらの引数にも、セル、または、名前を指定することができます。
- '暗号化キー名' は大文字小文字を区別しません。
- 暗号化キー名 ’default’ を設定している場合は、 '暗号化キー名' を省略することで、 ’default’ 暗号化キーの情報を使って暗号化することができます。
UTIL.ENCRYPT 関数は成功すると、16進数で表された文字列 を返します。この16進数文字列は暗号化キーが異なると異なる値となります。
- 例:暗号化対象値 ’暗号化したい値’ を登録した暗号化キー情報 ’key-1’ を使って暗号化
注意
以下のケースの場合は暗号化が失敗(#VALUE!)します。
暗号化対象値が暗号化できる値ではない場合(例えば、セル範囲指定をした場合など)
暗号化キー名が文字列ではない場合(例えば、セル範囲指定をした場合など)
指定した名前の暗号化キー情報が登録されていない場合
指定した名前の暗号化キーファイルが読み取れない場合
指定した名前の暗号化キーファイルが CELF の暗号化キー作成機能で作成したファイルでない場合
- C:/ProgramData/Microsoft/Crypto/RSA/MachineKeys フォルダの Everyone グループに「特殊なアクセス許可」が付与されていない場合※ この場合、上記フォルダにアクセス許可がないため、上記フォルダに「特殊なアクセス許可」を付与する必要があります。「特殊なアクセス許可」を付与するには、以下のコマンドを実行してください。(必要に応じて管理者権限で実行してください。)
icacls "C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys" /inheritance:e /grant Everyone:(RD,RA,REA,WD,AD,WA,WEA,RC)
暗号化データをデータベースに保存する¶
UTIL.ENCRYPT 関数を使って暗号化データをデータベースに保存する方法を説明します。
ここでは、以下のような簡単な登録処理を例とし、データを暗号化をしてデータベースに保存します。
暗号化の対象は以下とし、「名前」は暗号化せずにそのまま登録することとします。
- 住所(文字列書式)
- 電話番号(文字列書式)
- 生年月日(日付書式)
注意
UTIL.ENCRYPT 関数は、16進数で表された文字列 を返します。よって、格納できるテーブルのカラムのデータ型は 「文字列」 のみであることに注意してください。
「登録」アクションに UTIL.ENCRYPT 関数を設定して登録する¶
- 以下のように、「登録」アクションに UTIL.ENCRYPT 関数を設定します。
アクションが実行されたタイミングで関数により値が暗号化され、暗号化データがデータベースに登録されます。
データベースには以下のように登録されます。
ちなみに
次のように、シート上に UTIL.ENCRYPT 関数を設定して登録することもできます。
- 以下のように、入力欄の右横 G 列に UTIL.ENCRYPT 関数を設定しておきます。
- 入力完了したタイミングで入力した値が暗号化されますので、「登録」アクションにてこれら暗号化データをデータベースに登録します。
注意
データを暗号化すると、もともとのデータサイズよりおおよそ 2倍のサイズになることに注意してください。
暗号化データ(暗号化文字列)を格納できるカラムのデータ型は「文字列」で、最大長は 65,535バイト です。
暗号化後のデータサイズは以下の計算式で計算することができます。(文字コードは UTF8)
例: ’あいう’を暗号化
⇒ 0xE38182E38184E38186 :3byte * 3 = 9byte
⇒ 16 * (tranc (9 / 16) + 1) = 16byte :暗号化データの長さ(binary)
暗号化データ例:0x26769F5472867F4B720DF5C1D054AB5E
⇒ 16byte * 2 = 32byte :暗号化文字列の長さ(String)
暗号化データ文字列例:’26769F5472867F4B720DF5C1D054AB5E’
- 上記例では、’あいう’(UTF8 の文字コードで 9バイトの文字)を暗号化すると、32バイトの暗号化文字列になります。
- 文字コード UTF8 で 3バイト文字の場合、10,917文字 までが暗号化して「文字列」型カラムに格納できる文字数となります。