コンテンツにスキップ

ファイルやテキストの暗号化

今回はファイルやテキストデータを暗号化する方法を解説します。

今回使用するのは、AES という暗号化技術です。

現在でも多くの環境で利用されている技術で、身近なものでいえば Wi-Fi ルーターと端末との接続(WPA2 / WPA3)にも使用されています。

ブルートフォース(総当たり)での解析は難しく、鍵長を 256 ビットに設定した場合、総当たりで解読することは現実的な時間では不可能とされています。

共通鍵暗号方式に分類され、暗号化と復号化に同じパスワードを必要とします。

そのためパスワードを紛失してしまうと、データを元の状態に復号することができなくなります。

Power Automate Desktop を使用して AES で暗号化した場合は、復号のために必ずパスワードは控えておくようにしましょう。

特定のテキストデータを暗号化する場合

Section titled “特定のテキストデータを暗号化する場合”

オンプレミスソフトやウェブ上から取得した特定の文字列情報を暗号化する場合、「AES でテキストを暗号化する」というアクションを使用します。

「AES でテキストを暗号化する」アクションの詳細

Section titled “「AES でテキストを暗号化する」アクションの詳細”

アクションは以下のパラメーターを持ちます。

パラメーター名 値
エンコード 暗号化するテキストのエンコード(文字コード)
暗号化するテキスト 暗号化する対象テキスト
暗号化キー 暗号化に使用するパスワード

action

詳細設定では、パディング(既定値は PKCS7)とキー サイズ(128 / 192 / 256 ビット、既定値は 256 ビット)を指定できます。エンコードの既定値は「Unicode」です。復号化するときは、暗号化時と同じエンコード・パディング・キー サイズを指定する必要があります。

また、詳細設定の「salt を使用します」「初期化ベクトルを使用します」をオンにすると、ランダムに生成されたソルトと初期化ベクトルが Base64 形式の文字列として変数に格納されます。これらを使用して暗号化した場合は、復号化するときにも同じソルトと初期化ベクトルの値を指定する必要があるため、パスワードとあわせて控えておきましょう。

暗号化の結果は Base64 形式の文字列として、変数 EncryptedText に格納されます。

サンプルフローをコピーアンドペーストで実装する

Section titled “サンプルフローをコピーアンドペーストで実装する”

サンプルとして、テキストデータを暗号化し、結果をファイルに保存するフローを用意しました。

以下のコードをコピーし、Power Automate Desktop の編集画面に貼り付けることで、対象のアクションが追加されます。

マシン間で暗号化のパスワード情報が引き継がれないため、追加されたアクションの暗号化部分だけ、任意のパスワードに変更してください。

SET TargetString TO $'''%'暗号化する対象テキスト'%'''
Cryptography.EncryptText.EncryptTextWithAES Encoding: Cryptography.EncryptionEncoding.UTF8 TextToEncrypt: TargetString EncryptionKey: `` PaddingMode: Cryptography.PaddingMode.PKCS7 KeySize: Cryptography.AESKeySize.Bits256 EncryptedText=> EncryptedText
File.WriteText File: $'''C:\\Users\\Public\\Documents\\encrypted.txt''' TextToWrite: EncryptedText AppendNewLine: True IfFileExists: File.IfFileExists.Overwrite Encoding: File.FileEncoding.UTF8

実行すると、パブリックのドキュメントに暗号化されたテキストファイルが保存されます。

Power Automate Desktop を操作して実装

Section titled “Power Automate Desktop を操作して実装”
  1. 「アクションの検索」から、「AES でテキストを暗号化する」と入力します。

  2. パラメーターを以下のように設定します。%TargetString% は、サンプルフローの 1 行目(「変数の設定」)で作成した変数です。

    パラメーター名 値
    エンコード UTF-8
    暗号化するテキスト %TargetString%
    暗号化キー 暗号化に使用するパスワード
  3. 実行することで、指定した文字列が AES を用いて暗号化されます。

暗号化の設定が適切でない場合や、対応していない文字列が含まれている場合、暗号化中にエラーが発生する可能性があります。

ブロック処理を実装しておくことをおすすめします。

特定のファイルデータを暗号化する場合

Section titled “特定のファイルデータを暗号化する場合”

特定のファイルから情報を取得し暗号化する場合は、「AES でファイルから暗号化します」というアクションを使用します。

「AES でファイルから暗号化します」アクションの詳細

Section titled “「AES でファイルから暗号化します」アクションの詳細”

アクションは以下のパラメーターを持ちます。

パラメーター名 値
エンコード 暗号化するファイルのエンコード(文字コード)
暗号化するファイル 暗号化する対象ファイル
暗号化キー 暗号化に使用するパスワード

action

説明文に

AES でファイルの内容を暗号化します。

とあるため誤解しやすいですが、このアクションによって、参照するファイルが上書きされることはありません。

暗号化後の結果は変数として格納されます。

サンプルフローをコピーアンドペーストで実装する

Section titled “サンプルフローをコピーアンドペーストで実装する”

サンプルとして、パブリックのドキュメントに保存されているテキストファイルを暗号化し、作成された文字列を別のテキストファイルとして作成するフローを用意しました。

以下のコードをコピーし、Power Automate Desktop の編集画面に貼り付けることで、対象のアクションが追加されます。

マシン間で暗号化のパスワード情報が引き継がれないため、追加されたアクションの暗号化部分だけ、任意のパスワードに変更してください。

Cryptography.EncryptFromFile.EncryptFromFileWithAES Encoding: Cryptography.EncryptionEncoding.UTF8 FileToEncrypt: $'''C:\\Users\\Public\\Documents\\document.txt''' EncryptionKey: `` PaddingMode: Cryptography.PaddingMode.PKCS7 KeySize: Cryptography.AESKeySize.Bits256 EncryptedText=> EncryptedText
File.WriteText File: $'''C:\\Users\\Public\\Documents\\encrypted.txt''' TextToWrite: EncryptedText AppendNewLine: True IfFileExists: File.IfFileExists.Overwrite Encoding: File.FileEncoding.UTF8

Power Automate Desktop を操作して実装

Section titled “Power Automate Desktop を操作して実装”
  1. 「アクションの検索」から、「AES でファイルから暗号化します」と入力します。

  2. パラメーターを以下のように設定します。エンコードは、暗号化するファイルの文字コードに合わせてください。

    パラメーター名 値
    エンコード UTF-8
    暗号化するファイル C:\Users\Public\Documents\document.txt
    暗号化キー 暗号化に使用するパスワード
  3. 実行することで、指定したファイルのテキストデータが暗号化され、結果が変数として格納されます。

指定したファイルが存在しない場合や、暗号化中に問題が発生した場合にエラーとなります。

ブロック処理を実装しておくことをおすすめします。