it技術:vb2clr
差分
このページの2つのバージョン間の差分を表示します。
| 両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
| it技術:vb2clr [2025/06/19 11:57] – [公開キートークン] yajuadmin | it技術:vb2clr [2025/06/20 15:40] (現在) – [使い方] yajuadmin | ||
|---|---|---|---|
| 行 4: | 行 4: | ||
| ===== 使い方 ===== | ===== 使い方 ===== | ||
| - | https:// | ||
| - | |||
| ExitHandler.bas と CLRHost.cls ファイルをプロジェクトにドラッグ&ドロップする。\\ | ExitHandler.bas と CLRHost.cls ファイルをプロジェクトにドラッグ&ドロップする。\\ | ||
| {{: | {{: | ||
| 行 307: | 行 305: | ||
| End Sub | End Sub | ||
| </ | </ | ||
| + | |||
| + | ==== SHAハッシュの取得 ==== | ||
| + | <code vb> | ||
| + | Private Sub ComputeSHATest() | ||
| + | | ||
| + | Debug.Print " | ||
| + | Debug.Print GetSHA256(Range(" | ||
| + | |||
| + | Debug.Print " | ||
| + | Debug.Print GetSHA384(Range(" | ||
| + | | ||
| + | Debug.Print " | ||
| + | Debug.Print GetSHA512(Range(" | ||
| + | End Sub | ||
| + | </ | ||
| + | |||
| + | <code text 結果> | ||
| + | ' A1セルに" | ||
| + | SHA256 | ||
| + | a591a6d40bf420404a011733cfb7b190d62c65bf0bcda32b57b277d9ad9f146e | ||
| + | SHA384 | ||
| + | 99514329186b2f6ae4a1329e7ee6c610a729636335174ac6b740f9028396fcc803d0e93863a7c3d90f86beee782f4f3f | ||
| + | SHA512 | ||
| + | 2c74fd17edafd80e8447b0d46741ee243b7eb74dd2149a0ab1b9246fb30382f27e853d8585719e0e67cbda0daa8f51671064615d645ae27acb15bfb1447f459b | ||
| + | </ | ||
| + | |||
| + | RelaxTools-Addin のソースコードを元に書き換え、これを使うことで.NET Framweork 3.5のインストールが不要になる。\\ | ||
| + | https:// | ||
| + | |||
| + | <code vb basFunction> | ||
| + | Option Explicit | ||
| + | Private Const C_SHA256 As Long = 1 | ||
| + | Private Const C_SHA384 As Long = 2 | ||
| + | Private Const C_SHA512 As Long = 3 | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | Public Function GetSHA256(ハッシュ値算出範囲 As Range) As Variant | ||
| + | Application.Volatile | ||
| + | GetSHA256 = ComputeSHA(C_SHA256, | ||
| + | |||
| + | End Function | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | Public Function GetSHA384(ハッシュ値算出範囲 As Range) As Variant | ||
| + | Application.Volatile | ||
| + | GetSHA384 = ComputeSHA(C_SHA384, | ||
| + | |||
| + | End Function | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | Public Function GetSHA512(ハッシュ値算出範囲 As Range) As Variant | ||
| + | Application.Volatile | ||
| + | GetSHA512 = ComputeSHA(C_SHA512, | ||
| + | |||
| + | End Function | ||
| + | |||
| + | Private Function ComputeSHA(lngType As Long, r As Range) As Variant | ||
| + | |||
| + | Dim host As New CLRHost | ||
| + | Call host.Initialize(False) | ||
| + | host.CLRLoadAssembly (" | ||
| + | | ||
| + | Dim str As String | ||
| + | ' | ||
| + | str = Application.WorksheetFunction.Concat(r) | ||
| + | | ||
| + | ' | ||
| + | Dim code() As Byte | ||
| + | Dim objUTF8 As mscorlib.Object | ||
| + | Set objUTF8 = host.ToObject(host.CLRCreateObject(" | ||
| + | code = host.CLRInvokeMethod(objUTF8, | ||
| + | Set objUTF8 = Nothing | ||
| + | | ||
| + | ' | ||
| + | Dim hashValue() As Byte | ||
| + | Dim objSHA As mscorlib.Object | ||
| + | Select Case lngType | ||
| + | Case C_SHA256 | ||
| + | Set objSHA = host.ToObject(host.CLRCreateObject(" | ||
| + | Case C_SHA384 | ||
| + | Set objSHA = host.ToObject(host.CLRCreateObject(" | ||
| + | Case C_SHA512 | ||
| + | Set objSHA = host.ToObject(host.CLRCreateObject(" | ||
| + | End Select | ||
| + | hashValue = host.CLRInvokeMethod(objSHA, | ||
| + | Set objSHA = Nothing | ||
| + | | ||
| + | ' | ||
| + | Dim description As String | ||
| + | | ||
| + | description = "" | ||
| + | | ||
| + | Dim i As Long | ||
| + | For i = LBound(hashValue()) To UBound(hashValue()) | ||
| + | description = description & Right(" | ||
| + | Next i | ||
| + | |||
| + | ' | ||
| + | ComputeSHA = LCase(description) | ||
| + | |||
| + | Set host = Nothing | ||
| + | End Function | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | |||
it技術/vb2clr.1750301833.txt.gz · 最終更新: 2025/06/19 11:57 by yajuadmin
