2017-07-12 47 views
0

我想散列密碼'HelloWorld'到MD5。以下代碼摘自Generating the hash value of a file。問題在於,在提供的代碼中,我需要在密碼散列之前將密碼保存到文件中。我如何將它傳遞到內存中?我對vbs感到非常不舒服,請原諒。我不知道vbs中的二進制類型是什麼。從內存而不是從文件散列的文本

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

我懷疑你需要的數據類型Byte()的輸入ComputeHash_2()。 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

相關問題