LabVIEW PythonNodeでMD5SUMを計算

LabVIEWでmd5sum

LabVIEWにもmd5計算用の関数(vi)は用意されていますが、対象はファイルのみです。
できれば文字列から計算できると、便利なんですが対応していません。
(LabVIEW 2020からはmd5sumはdeprecate(非推奨)として関数パレットから削除され、
その代わりにsha checksumが追加されています。また、shasumと同じくLabVIEW2020で追加された
"Byte Array Checksum" 関数でバイト(U8)配列から計算できます。)
Pythonは、hashlibライブラリでmd5やshaをサポートしているので、それをLabVIEWのPythonNodeを
使って呼び出してみます。

MD5チェックサムファイル VI - LabVIEW 2018ヘルプ - National Instruments

15.1. hashlib --- セキュアハッシュおよびメッセージダイジェスト — Python 3.6.13 ドキュメント

準備

Windows用のPython3.6をインストールしてあることを確認します。
Python公式サイトからダウンロードしてください。
また、LabVIEW 2018~2020までのPythonNodeでサポートしているPythonのバージョンは2.7か3.6のみ。
また、LabVIEW 32bit版を使う場合は、Pythonも32bit版をインストールします。
(なお、anacondaでpythonインストールしても、PythonNodeは動きません)

LabVIEW側のダイアグラムとPythonスクリプト

LabVIEW側の処理

LabVIEW側の処理については、以下のVIスニペット画像を参照ください。 同じフォルダにある"Hashlib.py"ファイルに定義している "CalcMd5checksum()"関数を呼び出します。Pythonのバージョンは"3.6"を指定。

f:id:alucky4416:20210425164124p:plain
PythonNode_Hashlib VI snippet

Pythonスクリプト

ファイル名: "Hashlib.py"として、VIと同じフォルダに保存します。

ファイル名: "Hashlib.py"

import hashlib

def CalcMd5checksum(str):
    return hashlib.md5(str.encode()).hexdigest()

md5の代わりにsha256に変更するだけで、種類を変えることができるはずです。
str.encode()は StringからByteStringに変換するためのもの。
hexdigest()は、16進文字列で結果を出力します。

確認

md5sumコマンドを使って、結果があっているかどうか確認します。
Windowsでもgit for windowsがインストールされていれば、md5sumコマンドが使えます。

$ echo -n "<string>" | md5sum

echo コマンドの "-n"オプションを付けないと改行を付けてからmd5sumに渡すため、LabVIEW>>PythonNode>>hashlib.md5で計算した結果と違ってきます。ご注意ください。