VBAやPowershell SHA-1ハッシュ値を生成するサンプル

PowerShell

サンプルコード

VBAやPowershell を使って、SHA-1ハッシュを生成するサンプル。SHA-1とは、インプット(文字列)から160ビット(20バイト)のハッシュ値を生成すること。

VBAでもPowershelでも”hello world”のSHA-1ハッシュ値はは”2AAE6C35C94FCFB415DBE95F408B9CE91EE846ED”

なぜ System.Security.Cryptography.SHA1CryptoServiceProvider がVBAで使えるのか

Microsoft Office と .NET の相互運用性 | Microsoft Learn  より

Office VBA から .NET Framework クラス ライブラリを呼び出す 抜粋

Office VBA は、.NET Framework クラス ライブラリが提供する機能のいくつかの呼び出しを行うことができますが、 このアプローチにはいくつかの重要な制限事項があります。 それは、COM (Office VBA が基づいている) が .NET Framework クラス ライブラリの以下のものを認識しないためです。

  • パラメータ化されたコンストラクタ : 1 つ以上のパラメータを受け取るコンストラクタを持つ .NET Framework クラス ライブラリの任意クラスは、 そのクラスの任意インスタンスが COM の New と等価な設定になっている場合 (クラスが Office Visual Basic オブジェクト ブラウザに表示されていても)、 実行時エラーを生成するでしょう。 たとえば、Office VBA で Dim objWS As New Excel.Worksheet(Caption:="Sheet1") というようなコードは成立しません。 これは、コード (Caption:="Sheet1") が COM コード構文に従っていないためです。
  • パブリックではない静的 (共有) メンバ : PrivateProtected、または Static (Shared) とマークされている .NET Framework クラス ライブラリのどのプロパティ、メソッド、またはイベントも COM にアクセスできず、 Office Visual Basic オブジェクト ブラウザに表示されません。 .NET Framework クラス ライブラリ メンバが Public Instance とマークされている場合でも、 メンバのクラスにパラメータ化されたコンストラクタが存在する場合は、 Office Visual Basic オブジェクト ブラウザに表示されません。

.NET Framework クラス ライブラリのドキュメントを調べると、 COM から呼び出し可能なクラスとメンバが非常に少ないことに気付くはずです。 これは、.NET Framework クラス ライブラリのクラスの多くがパラメータ化されたコンストラクタを使用し、 パラメータ化されたコンストラクタを持たないクラスはパブリック インスタンス (Public Instance) のメンバをほとんど所有しないからです。

これらの制限事項により、 もっと興味深く、役立つオプションに話題を移します。 このオプションとは、.NET から Office VBA オブジェクト ライブラリと ActiveX コントロールを呼び出すことです。

ChatGPT引用

 System.Security.Cryptography.SHA1CryptoServiceProviderは、.NET Frameworkで提供されるクラスで、SHA1ハッシュ関数を提供している。VBAは、.NET Frameworkを直接サポートしていないため、このクラスを直接使用することはできないが、Windowsオペレーティングシステムには、COM Interopと呼ばれる技術があり、これで、.NET FrameworkのクラスをCOMオブジェクトとして公開し、COM対応のプログラムから利用することができます。System.Security.Cryptography.SHA1CryptoServiceProviderは、COM Interopが使えるため、VBAから使用することが可能です。具体的には、CreateObject関数を使用して、System.Security.Cryptography.SHA1CryptoServiceProviderオブジェクトを作成しています。

 この関数は、COMオブジェクトを作成するために使用され、指定されたプログラムIDまたはCLSIDに対応するオブジェクトを返します。COM Interopによって、VBAは.NET FrameworkのクラスをCOMオブジェクトとして認識し、CreateObject関数を使用して利用することができるようになります。

System.Security.Cryptography.SHA1CryptoServiceProvider とは

 System.Security.Cryptography.SHA1CryptoServiceProviderは、.NET Frameworkで提供されるクラスの1つで、SHA1ハッシュアルゴリズムを実装しています。SHA1は、Secure Hash Algorithmの1つであり、任意の長さのデータから固定長のハッシュ値を生成する暗号学的ハッシュ関数です。SHA1は、デジタル署名やメッセージ認証など、セキュリティ関連の機能で広く使用されています。

SHA1CryptoServiceProvider クラス (System.Security.Cryptography) | Microsoft Learn

コメント

タイトルとURLをコピーしました