看板 Visual_Basic 關於我們 聯絡資訊
※ 引述《jimpop (popmij)》之銘言: : 最近在寫有關帳號密碼的登入程式 : 發現最常見的編碼 MD5 竟然在VB 2005 裡找不到~~~ : 而且網路上(除了微軟)竟然也沒有資料!!!????? 阿我用"VB.NET md5"就找到一堆 資料根本是滿地爬 中文英文簡體正體都有 看都看不完 請問你是找到哪個星球去了 在哪裡找到的也拜託描述清楚一點 這是MSDN,不是什麼隨便的參考站還是討論區,不要只給個短網址。 你從MSDN找到的網頁是 System.Security.Cryptography 的 MD5 class 他那麼多範例程式,重點只有以下這樣 Imports System Imports System.Security.Cryptography Imports System.Text Function getMd5Hash(ByVal input As String) As String ' 宣告MD5物件 Dim md5Hasher As MD5 = MD5.Create() ' 把輸入字串input依照系統預設編碼(往往指Big5)轉成byte陣列。 ' 注意你如果選擇不同的編碼轉出來的byte陣列絕不相同。 ' 陣列接著再送給MD5物件算hash,存在data這個byte陣列裡面 Dim data As Byte() = _ md5Hasher.ComputeHash(Encoding.Default.GetBytes(input)) ' 讀取data內的各個byte,把每個byte轉成16進位(ToString("x2")) ' 然後用一個stringBuilder(sBuilder)串接成字串 Dim sBuilder As New StringBuilder() Dim i As Integer For i = 0 To data.Length - 1 sBuilder.Append(data(i).ToString("x2")) Next i ' 取出sBuilder中的字串,傳回去 Return sBuilder.ToString() End Function 只要在你的module裡面自己寫一次這個函數,根本就不用再新建專案。 看懂這個函數以後另外那個verifyMD5hash() 就沒有任何特別的:你要檢查 這段文字的hash對不對,當然就是用這段文字再產生一個hash,然後看兩者 有沒有一樣而已。他還用一個comparer,也未必就要這樣做,也可以把hash 輸入用,tolower()全部轉成小寫再用 = 比對。除非speed is the key,或 者你很計較多一個字串的儲存空間。你也可以看到string.ToLower() is evil 這種文章,但是這種深奧的東東以後再看就好了。 也有一些範例的用法不同,例如這一個,來自「藍色小鋪」: http://tinyurl.com/cj4tbk Protected Function ComputeMd5(ByVal filePath As String) As String Dim CurrentFileStream As FileStream = File.OpenRead(filePath) '(1) Dim CryptoMd5 As New MD5CryptoServiceProvider() '(2) Dim EncryptHashCode As Byte() = _ CryptoMd5.ComputeHash(CurrentFileStream) '(3) Dim Result As String = New String("") For ByteIndex As Integer = 0 To EncryptHashCode.Length - 1 Result += EncryptHashCode(ByteIndex).ToString("x2") '(4) Next Return Result End Function 這個的差別在 (2)(3): 使用 MD5CryptoServiceProvider(),而不直接使用MD5。但是這 兩者在使用上幾乎沒有差別。 (1): 直接打開檔案計算整個檔案的hash。注意他並不讀取檔案成字串再hash; 同一頁上的問題就是先讀成字串然後再hash,結果300MB左右就當了。 他這只開檔開成filestream,這樣就是任何檔案都可以hash,也不用 煩惱字碼轉換。 (4)他用傳統的 + 號接字串,不用stringBuilder。這當然是一個壞習慣, 所以你可以改掉它。 他也是寫成一個函數,或方法-所以只要在你的class裡面寫一次就好。當然該 import的還是要import,參照前面。   -- Google 關鍵字 : MPFC-TCP / 殺人笑話 / 包租婆也有過當羅莉的時候 Youtube關鍵字 : 脫衫脫褲 / 傻蛋奧運 / 宗教審訊 / 買張床 / 單車超人 / 謳歌金錢 *美髮師登山隊 http://tinyurl.com/dm6lh3 *Ypres 1914 http://tinyurl.com/b432jb [蒙帝派松正體中文計畫] http://www.youtube.com/user/JamesBondXD -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 125.232.100.235
jimpop:因為我是使用 VB 2005 MD5 去找~資料並沒有滿地爬這麼恐怖 05/08 10:43
jimpop:msdn~說真的對新手會有點難度吧!? 05/08 10:44
jimpop:會把它貼出來~除了分享外~也提供以後的新手做索引搜尋 05/08 10:45
jimpop:當然還是要謝謝你這篇文章~~讓我又長知識 05/08 10:45
Peruheru:第一次看MSDN誰都是新手,但是就是新手學著看才懂更多XD 05/08 10:52
Peruheru:我也是最近才開始會去看MSDN.... 05/08 10:53
Privator:上次說人家新手病, 這次是找到哪個星期去了, 修養還真好. 05/10 15:23