SHA1の16進数文字列を生成

レガシーASPで、SHA1の16進数文字列を生成してみました。
.NETの相互運用機能を利用しているのか・・・な。
Windows Server 2003 とかでも、.Net Framework 2.0 が入っていれば、動くと思われます。Server.CreateObject を、CreateObject にすれば、VBSとかWSHでも動きそうです。(未確認)

ソース

Function GetSHA1(ByVal plainText)

    Dim objEnc
    Dim objSHA1
    Dim objStream
    Dim byteTmp
    Dim outText

    Set objEnc = Server.CreateObject("System.Text.UnicodeEncoding")
    Set objSHA1 = Server.CreateObject("System.Security.Cryptography.SHA1CryptoServiceProvider")
    Set objStream = Server.CreateObject("System.IO.MemoryStream")

    ' SHA1を算出
    Call objSHA1.ComputeHash_2( objEnc.GetBytes_4(plainText) )

    ' 算出結果を、メモリストリームへ保存
    Call objStream.Write(objSHA1.Hash(), 0, (objSHA1.HashSize / 8))
    objStream.Position = 0

    Do
    
        ' 1バイトずつ読み取り。
        byteTmp = objStream.ReadByte()
    
        ' 最後まで読むと、読み取り結果が、-1になる。
        If byteTmp = -1 Then Exit Do
    
        ' 16進数へ変換
        outText = outText & Right("00" & Hex( byteTmp ), 2)
    
    Loop

    Call objStream.Close()
    Set objStream = Nothing
    Set objSHA1 = Nothing
    Set objEnc = Nothing

    GetSHA1 = outText

End Function

ソースは、http://d.hatena.ne.jp/Fio/20080826/p1 を、参考にさせていただきました。情報、ありがとうございます!
そこでは、MSXML2を使用されていたので、何とか.NETだけで出来ないかと模索し、こんなかんじになりました。

リファレンスが見つけられなかったので憶測ですが、例えば、ComputeHash_2 とかの _2 は、ComputeHash が、Overload されていて、2つ目を使うということのようです。

CreateObjectできるものは、.NET Framework の全ての名前空間では無いようです。OLE-COM Object Viewer があると分かりやすいですが、管理ツールのコンポーネント サービスを使ったり、レジストリを調べる方法があるかと思います。