2017-07-12 14 views
0

私はパスワード「HelloWorld」をMD5にハッシュしたいと思う。以下のコードはGenerating the hash value of a fileの抜粋です。問題は、提示されたコードで、パスワードをハッシュする前にファイルに保存する必要があるということです。どのように私はメモリにそれを渡すことができますか?私はVBで非常に不快であると感じています、私を許してください。私はどのような種類のバイナリがVBにあるのかわかりません。ファイルからメモリの代わりにテキストをハッシュする

Option Explicit 
MsgBox("Md5 Hash for 'HelloWorld': " & GenerateMD5("HelloWorld")) 

Public Function GenerateMD5(ByRef hashInput) 
    'hashInput is the plain text hash algorithm input 
    Dim oMD5   : Set oMD5 = CreateObject("System.Security.Cryptography.MD5CryptoServiceProvider") 
    oMD5.Initialize() 
    Dim baHash   : baHash = oMD5.ComputeHash_2(GetBinaryFile("D:/HASHINPUT.txt")) 
    GenerateMD5 = ByteArrayToHexStr(baHash) 
End Function 

Private Function ByteArrayToHexStr(ByVal fByteArray) 
    Dim k 
    ByteArrayToHexStr = "" 
    For k = 1 To Lenb(fByteArray) 
     ByteArrayToHexStr = ByteArrayToHexStr & Right("0" & Hex(Ascb(Midb(fByteArray, k, 1))), 2) 
    Next 
End Function 

Private Function GetBinaryFile(filename) 
    Dim oStream: Set oStream = CreateObject("ADODB.Stream") 
    oStream.Type = 1 'adTypeBinary 
    oStream.Open 
    oStream.LoadFromFile filename 
    GetBinaryFile = oStream.Read 
    oStream.Close 
    Set oStream = Nothing 
End Function 
+0

MD5ハッシュ文字列(パスワード)またはファイルですか?それはわかりません –

+0

パスワード。 – user2366975

答えて

0

私はあなたがComputeHash_2()のデータ型Byte()の入力を必要とする疑いがあります。 VBScriptは単独でそのデータ型を作成することはできませんが、最初にファイルに書き込まずに文字列をバイト配列に変換するためにADODB.Streamオブジェクトを使用することができます。

pwd = "foobar" 

Set stream = CreateObject("ADODB.Stream") 
stream.Mode = 3  'read/write 
stream.Type = 2  'text 
stream.Charset = "ascii" 
stream.Open 
stream.WriteText pwd 
stream.Position = 0 'rewind 
stream.Type = 1  'binary 
bytearray = stream.Read 
stream.Close 
+0

ありがとうございます!私は、ストリームオブジェクトを使用して同じ考えを持っていた、それを右には得られなかったが、あなたはそれを釘付け:) – user2366975

関連する問題