暗号化データをデータベースに保存する

暗号化したデータをデータベースに保存するには、データを UTIL.ENCRYPT(データを暗号化する)関数を使用して暗号化し、データ登録アクション等を使用してデータベースに保存します。
ここでは、UTIL.ENCRYPT 関数を使用して、暗号化データをデータベースに保存する方法を説明します。

参考

暗号化したデータの復号例については 暗号化データをデータベースから復号する を参照してください。

暗号化キー情報を設定する

データを暗号化するには事前に '暗号化キー' を設定する必要があります。設定方法は 暗号化キー情報の設定をする を参照してください。
設定した暗号化キー名は UTIL.ENCRYPT 関数で使用します。

暗号化関数を使用する

UTIL.ENCRYPT 関数は、第1引数に '暗号化対象値(暗号化したい値)' を指定し、第2引数に設定した '暗号化キー名' を指定します。
../../../_images/img_01369.png

ヒント

  • どちらの引数にも、セル、または、名前を指定することができます。
  • '暗号化キー名' は大文字小文字を区別しません。
  • 暗号化キー名 ’default’ を設定している場合は、 '暗号化キー名' を省略することで、 ’default’ 暗号化キーの情報を使って暗号化することができます。
UTIL.ENCRYPT 関数は成功すると、16進数で表された文字列 を返します。この16進数文字列は暗号化キーが異なると異なる値となります。
  • 例:暗号化対象値 ’暗号化したい値’ を登録した暗号化キー情報 ’key-1’ を使って暗号化
../../../_images/img_02305.png

注意

以下のケースの場合は暗号化が失敗(#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 関数を使って暗号化データをデータベースに保存する方法を説明します。
ここでは、以下のような簡単な登録処理を例とし、データを暗号化をしてデータベースに保存します。
../../../_images/img_03227.png
暗号化の対象は以下とし、「名前」は暗号化せずにそのまま登録することとします。
  • 住所(文字列書式)
  • 電話番号(文字列書式)
  • 生年月日(日付書式)

注意

UTIL.ENCRYPT 関数は、16進数で表された文字列 を返します。よって、格納できるテーブルのカラムのデータ型は 「文字列」 のみであることに注意してください。

「登録」アクションに UTIL.ENCRYPT 関数を設定して登録する

  1. 以下のように、「登録」アクションに UTIL.ENCRYPT 関数を設定します。
../../../_images/img_06133.png
  1. アクションが実行されたタイミングで関数により値が暗号化され、暗号化データがデータベースに登録されます。

  2. データベースには以下のように登録されます。

    ../../../_images/img_07114.png

ちなみに

次のように、シート上に UTIL.ENCRYPT 関数を設定して登録することもできます。

  1. 以下のように、入力欄の右横 G 列に UTIL.ENCRYPT 関数を設定しておきます。
../../../_images/img_04187.png
  1. 入力完了したタイミングで入力した値が暗号化されますので、「登録」アクションにてこれら暗号化データをデータベースに登録します。
../../../_images/img_05169.png

注意

データを暗号化すると、もともとのデータサイズよりおおよそ 2倍のサイズになることに注意してください。

暗号化データ(暗号化文字列)を格納できるカラムのデータ型は「文字列」で、最大長は 65,535バイト です。
暗号化後のデータサイズは以下の計算式で計算することができます。(文字コードは UTF8)
../../../_images/img_08106.png
例: ’あいう’を暗号化

⇒ 0xE38182E38184E38186 :3byte * 3 = 9byte
⇒ 16 * (tranc (9 / 16) + 1) = 16byte :暗号化データの長さ(binary)
暗号化データ例:0x26769F5472867F4B720DF5C1D054AB5E
⇒ 16byte * 2 = 32byte :暗号化文字列の長さ(String)
暗号化データ文字列例:’26769F5472867F4B720DF5C1D054AB5E’
  • 上記例では、’あいう’(UTF8 の文字コードで 9バイトの文字)を暗号化すると、32バイトの暗号化文字列になります。
  • 文字コード UTF8 で 3バイト文字の場合、10,917文字 までが暗号化して「文字列」型カラムに格納できる文字数となります。

関連キーワード

暗号、暗号化、復号、セキュリティ、AES、データベース、関数、鍵、キー、アルゴリズム


../../../_images/celf_help_mascot54.png