【RPA】UiPath Invoke Codeでファイルのハッシュ値を生成する
RPAツールであるUiPathでは、
GUIによってアクティビティと呼ばれる処理の部品を選択して貼り付けることで、
パソコンで行うための一連の動作を組み立てることができます。
各処理ではVisualBasic言語(VB.NET)によって、原則、1行だけのコードを書く(プログラミング)ことができます、。
それだけでは収まらない処理は「コードを呼び出し(Invoke Code)」というアクティビティによって、
複数行のコードをプログラミングすることができます。
Invoke Codeアクティビティは、原則、一つのVB.NETのSUB関数としての機能でしかなく、
一つの関数を作るようなイメージです。
(Invoke Codeアクティビティ内で複数の関数を定義することは現状ではできません)
今回は、Invoke Codeアクティビティによって、
ファイルのハッシュ値を生成するコードを作成しました。
ハッシュ値を生成するアルゴリズムは、主に、SHA-1(Secure Hash Algorithm 1)とSHA-2(Secure Hash Algorithm 2)です。
さらに、SHA-2(Secure Hash Algorithm 2)には、SHA256、SHA384、SHA512などがあります。
ハッシュ値は、原則、データ毎に特有の値を持ち、データが異なれば違うハッシュ値を持ちます。
■ハッシュ値を生成するInvoke Codeアクティビティの説明
まず、ハッシュ値を生成するInvoke Codeアクティビティの引数を定義します。
In_Mode As String 入力:ハッシュモード("SHA-1" or "SHA256" or "SHA384" or "SHA512")
In_File As String 入力:ファイルパス
Out_Result As Boolean 出力:結果
Out_ErrorMessage As String 出力:エラーメッセージ
Out_Hash As String 出力:ハッシュ値
ハッシュ値を生成するInvoke CodeアクティビティのVB.NETコードは、
以下の処理を実施します。
①入力引数のチェックする
②ファイルを読み込みモードで開き、ファイルストリームを生成する
③ファイルからデータを読み込むバッファを確保する
④ファイルからデータを読み込む
⑤モード指定毎にハッシュ生成インスタンスを生成し、ハッシュ値を生成
⑥各種ハンドルのクローズ処理を実施する
⑦正常であれば、Out_ResultにTrue、Out_ErrorMessageに空文字("")、Out_Hashにハッシュ値を設定して終了する
異常(例外発生)であれば、Out_ResultにFalse、Out_ErrorMessageにエラーメッセージ(例外メッセージ)を設定して終了する
■UiPathで暗号化のサンプルシーケンスの作成
以下の手順で2つのファイル(testA.pdfとtestB.pdf)のハッシュ値を生成し、比較するシーケンスを作成します。
①UiPathのプロジェクトを作成
②UiPathのシーケンスを作成
③UiPathの画面から以下をインポート
System.Security.Cryptography
④作成したシーケンスのXAMLファイル(.xaml)をテキストエディタで開き、以下を追加
<TextExpression.NamespacesForImplementation>
<sco:Collection x:TypeArguments="x:String">
・・・
<x:String>System.Security.Cryptography</x:String> ※追加
・・・
</sco:Collection>
</TextExpression.NamespacesForImplementation>
⑤以下の変数を定義します。
Mode String パスワード
File String ファイルパス
Result Boolean 結果
ErrorMessage String エラーメッセージ
HashA String ハッシュ値(testA.pdfのハッシュ値)
HashB String ハッシュ値(testB.pdfのハッシュ値)
⑥代入アクティビティを追加し、Mode変数に"SHA256"を設定する
⑦代入アクティビティを追加し、File変数にファイルのパス(testA.pdf)を設定する
⑧Invoke Codeアクティビティを追加し、コード編集でハッシュ値を生成するコードを設定する
その際、引数に対応する変数を設定する
In_Mode → Mode
In_File → File
Out_Result → Result
Out_ErrorMessage → ErrorMessage
Out_Hash → HashA
⑨条件分岐アクティビティを追加する
⑩条件分岐アクティビティで、Result=True(成功)のとき以下を設定する
⑩-1 代入アクティビティを追加し、Mode変数に"SHA256"を設定する
⑩-2 代入アクティビティを追加し、File変数にファイルのパス(testB.pdf)を設定する
⑩-3 Invoke Codeアクティビティを追加し、コード編集でハッシュ値を生成するコードを設定する
その際、引数に対応する変数を設定する
In_Mode → Mode
In_File → File
Out_Result → Result
Out_ErrorMessage → ErrorMessage
Out_Hash → HashB
⑩-4 条件分岐アクティビティを追加する
⑩-4-1 HashAとHashBを比較し、一致すれば"same"、不一致であれば"different"を出力する
⑪実行する
※本記事のサンプルコードに関しては、一切の責任を負いません。
すべて自己責任でお願いいたします。
■上記のサンプルコードプロジェクトを提供します(著作権フリー)
①UiPathプロジェクト(UiPathPrj_InvokeCode_HASH)
以下のサンプルシーケンスを準備しました。
2つのファイル(testA.pdfとtestB.pdf)のハッシュ値を生成し、比較するシーケンスシーケンス
※UiPath Community Editionで作成
(UiPath Studio Pro 2020.10.0 Community License)
②VBコンソールアプリケーションプロジェクト(VBPrj_InvokeCode_HASH)
Invoke Codeアクティビティ内でデバックすることは困難なので、
一度、VBコンソールアプリケーションとしてプログラミングし、
デバックをしてからコピー&ペーストしたほうが効率的です。
そのため、Invoke Codeアクティビティで動かす同じコードを
VBプロジェクトから動作させるようにしてあります。
※Microsoft Visual Studio Community 2019 Version 16.7.6で作成
(Microsoft.NET Framework Version 4.8.03752)
以下からサンプルコードをダウンロードできます。
ここから先は
¥ 100
この記事が気に入ったらサポートをしてみませんか?