Skip to main content

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

今回は暗号化されたテキストデータを復号化(解読)する方法を解説します。

暗号化技術と注意点

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

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

ブルートフォース(総当たり)での解析は難しく、鍵長を 256 ビットに設定した場合、解析には数百兆年かかるといわれています。

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

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

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

また、今回解読方法について解説しますが、前述した通り総当たりでの解析は非常に難しいです。

パスワードを忘れてしまった場合でも、暗号化アルゴリズムを把握しており、パスワードの桁数が少なければ解読できるかもしれませんが、あまり現実的ではありません。

解説はあくまで、Power Automate Desktop を使用して暗号化されたデータを、同一のパスワードを使って復号化するケースに限るということをご了承ください。

パスワードの設定方法

前述した通り、AES を使って暗号化・復号化するためにはパスワードが必要になります。

パスワードの指定は、直接入力や変数を用いた入力など柔軟に設定できますが、おすすめは機密情報としてマークした入力変数です。

パスワードの設定方法

この方法であれば、フロー設定時や実行時でも、パスワードを安全に保つことができます。

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

すでに暗号化されている特定の文字列情報を復号化する場合、「AES でテキストを解読する」というアクションを使用します。

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

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

パラメーター名
エンコード作成される文字列の文字コード
復号化するテキスト復号化する対象テキスト
復号化キー復号化に使用するパスワード

action

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

サンプルとして、テキストデータを一度暗号化し、同一の鍵を使って復号化するフローを用意しました。

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

パスワードは前述した方法で、「password」という名前の入力変数が存在することを前提としています。

SET TargetString TO $'''%'暗号化する対象テキスト'%'''
Cryptography.EncryptText.EncryptTextWithAES Encoding: Cryptography.EncryptionEncoding.UTF8 TextToEncrypt: TargetString EncryptionKey: password PaddingMode: Cryptography.PaddingMode.PKCS7 KeySize: Cryptography.AESKeySize.Bits256 EncryptedText=> EncryptedText
Cryptography.DecryptText.DecryptTextWithAES Encoding: Cryptography.EncryptionEncoding.UTF8 TextToDecrypt: EncryptedText DecryptionKey: password Padding: Cryptography.PaddingMode.PKCS7 KeySize: Cryptography.AESKeySize.Bits256 DecryptedText=> DecryptedText

実行すると、対象となったデータが暗号化され、復号結果と対象データが一致していることを確認できます。

Power Automate Desktop を操作して実装

  1. 「アクションの検索」から、「AES でテキストを復号化する」と入力します。

  2. パラメーターを以下のように設定します

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

起こりうる例外

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

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