文字列のバイト文字変換


あっくん  2005-11-28 22:26:45  No: 128330

こんにちは。
VB6.0で開発しています。

下記の内容を、VB6.0で実現したいのですがどのように
すれば、よいかわかりません。。すみませんが、教えていただけないでしょうか?

Dim bytMessage() As Byte
Dim bytMD5() As Byte
Dim strMD5 As String
Dim MD5 As New System.Security.Cryptography.MD5CryptoServiceProvider

'入力文字列をバイト文字列に変換する。
bytMessage = System.Text.Encoding.Unicode.GetBytes(wStr)

'MD5ハッシュ値を計算する。
bytMD5 = MD5.ComputeHash(bytMessage)

'計算したハッシュ値を文字列型に変換する。
strMD5 = System.BitConverter.ToString(bytMD5)

よろしくお願いします。


魔界の仮面弁士  2005-11-28 22:35:02  No: 128331

1. CAPICOM を使う。
http://www.microsoft.com/downloads/details.aspx?FamilyID=860EE43A-A843-462F-ABB5-FF88EA5896F6&displaylang=ja

Const CAPICOM_MD5 = 3
With CreateObject("CAPICOM.HashedData")
    .Algorithm = CAPICOM_MD5
    .Hash 元データ
    変換結果 = .Value
End With

2. CryptAPI を使う。

3. BASP21 の MD5 メソッドを使う。
http://www.hi-ho.ne.jp/babaq/basp21.html


ひでらん  2005-11-29 02:16:18  No: 128332

私がヘタレなのかもしれませんが、VB6で下記の様な
書き方できるんでしょうか? .NET系の様な気が・・・

> bytMessage = System.Text.Encoding.Unicode.GetBytes(wStr)

全然質問に答えてない内容で申し訳ありません。


魔界の仮面弁士  2005-11-29 02:21:02  No: 128333

> .NET系の様な気が・・・
そうですよ。

今回の質問は、この VB.NET のコードと同様の機能(MD5ハッシュ値取得)を
VB6 にて実装したいけれど、どのようにすればよいのか…という質問ですよね。


もげ  2005-11-29 02:28:05  No: 128334

>.NET系の様な気が・・・

おそらく、質問者殿の意図としては、
こんなことをVB6.0でもやりたいだけど、どう書けばいいの?
と思われます。
それを見越して魔界の仮面弁士殿はレスされているのでしょう。

蛇足ながら、追加で、
http://kamoland.com/comp/kCrypt.html
http://www.di-mgt.com.au/src/basMD5.bas.txt


ひでらん  2005-11-29 02:52:30  No: 128335

なるほど、よく見ればそ〜書いてありますね。
疑問に思ったのは私だけですね、きっと・・・。

あっくんさん
質問に関係ない事を書いてしまい申し訳ないです。


あっくん  2005-11-30 01:43:53  No: 128336

魔界の仮面弁士さん、もげさん
いろいろとご教授ありがとうございます。
大変参考になりました。

また、ひでらんさん質問の仕方が悪くてすみません。

もう一つ教えていただきたいのですが、
直接、バイナリの値を入力して、変換結果を知りたいのですが。。。

例えば、入力値が
E1 F0 C0 54 4A B4 B2 0B A0 70 4F E7 C1 D2 9E AF 3A 30 30 30 30
の16進数をバイト型に変換しこれを引数に渡し、

29 4F B8 37 EF 92 80 69 19 C6 95 E0 1B 28 52 B2

引数を渡すまでは、VB6.0です。
という結果を得たいのですが、なかなかうまくいきません。。。

中身的には、
    Set objmd5 = CreateObject("AspMD5.AspMD5")
    wStr = Text0.Text & "3A30303030" ' & ":0000"

    For i = 0 To 20
        If i = 0 Then
            strmoji = Mid(wStr, 1, 2)
        Else
            strmoji = Mid(wStr, i * 2 + 1, 2)
        End If
        strmoji = "&H" & strmoji
        wB1 = CByte(strmoji)
        If i <> 21 Then
            strmoji1(i) = strmoji
            wB(i) = wB1
         End If
    Next i
    wRStr = StrConv(objmd5.MD5String(wB), vbUpperCase)
    Text1.Text = wRStr

として、処理をしています。

すみませんが、どなたかご教授ください。
よろしくお願いします。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加