12プラットフォームでは、オブジェクトフィールドのデータを外部保存する際「データを暗号化するセキュア格納」ができるようになりました。13プラットフォームでは、「データベースそのものの暗号化」ができるようになりました。16プラットフォームでは、フィールドの値を暗号化できるようになりました。これにより「パスワード」「マイナンバー」「クレジットカード番号」など機密性の高いデータをフィールド単位で暗号化できるようになりました。16で追加された新しい関数「CryptEncrypt」「CryptEncryptBase64」を使います。認証付き暗号化)で暗号化します。暗号化の結果が、「CryptEncrypt」ではオブジェクトに、「CryptEncryptBase64」ではテキストになるので、暗号化するデータや暗号化した後のデータの利用方法により関数を使い分けるのが良いでしょう。指定されたキーでデータ(テキストまたはオブジェクト)を暗号化してオブジェクトデータを返します。指定されたキーでオブジェクトデータを復号してテキストまたはオブジェクトデータを返します。指定されたキーでデータ(テキストまたはオブジェクト)を暗号化して、Base64フォーマットのテキストを返します。指定されたキーでBase64エンコードテキストを復号してテキストまたはオブジェクトデータを返します。実際に関数を使うとどのようになるのか「マイナンバー」を例にして確認してみましょう。「マイナンバー」「暗号化キー」「暗号化data」というフィールドを用意してマイナンバーと、暗号化キーを指定します。暗号化キーは日本語でも構いません。「CryptEncrypt関数」で「暗号化キー」をキーに指定して「マイナンバー」フィールドを暗号化すると、「encrypted.data」というファイルが作成されます。(キャプチャの例では、マイナンバーをシステム内に保存しないために、暗号化と同時に「マイナンバー」「暗号化キー」フィールドを空にする処理を実行しています。)以上で暗号化は完了です。このファイルをエクスポートしてテキストエディタで無理やり開いてみると、意味のわからない文字の羅列であることがわかります。同じマイナンバー、同じキーで暗号化しても、その都度encrypted.data内のテキストは変わっていました。encrypted.data内のテキストには、不可視文字も含まれています。復号も、暗号化同様に簡単です。正しい「暗号化キー」を指定して「CryptDecrypt関数」を使って復号すると、正しく元の値を得ることができます。(キャプチャは、復号結果です。)復号時、暗号化のキーが間違っていると「?」が返されます。同じマイナンバーに対し「CryptEncrypBase64関数」を使うと、図のようなテキストが返されます。これは、暗号化されたマイナンバーがBase64フォーマットのテキストで表示されたものです。フォーマットでエンコードされたテキストからのオブジェクトまたはテキスト内容を返します)でこのデータをデコードしてみたところ、意味をなさないテキストが返されました。「機密性の高いデータについては暗号化したデータのみを保存し、必要な時だけ復号する」という処理を、この関数を使うと簡単に実現できます。保有名簿数による適用除外事業者がなくなりました。PTA」などの非営利組織も含まれます)。この新しい関数が、皆さまがよりセキュアなシステムを構築する上で役に立つと幸いです。