2011-05-31 32 views
1

我是新來的C#只想問一些問題。如何在C#中生成MD5總和並執行代碼?

  1. 我在C#中得到了MD5總和,我應該把代碼放在一個類中,但是我要從哪裏調用這個方法代碼? ASPX還是什麼?我記得那堂課不能獨立運作。

  2. 如何編寫調用該方法的方法?

  3. 我想創建一個MD5文件的文件是一個文本文件。

這是我發現:

public static string CalculateMD5Hash(string strInput) 
{ 
    MD5 md5 = System.Security.Cryptography.MD5.Create(); 
    byte[] inputBytes = System.Text.Encoding.ASCII.GetBytes(strInput); 
    byte[] hash = md5.ComputeHash(inputBytes);    

    StringBuilder sb = new StringBuilder();    
    for (int i = 0; i < hash.Length; i++)    
    {     
    sb.Append(hash[i].ToString("x2")); 
    }   
    return sb.ToString();  
} 
+0

您是否試圖從控制檯應用程序生成文件的MD5哈希值? – tofutim 2011-05-31 07:28:12

+0

這是一種方法,你可以把它放在你的代碼後面並稱之爲CalculateMD5Hash(AnyData); – Ruben 2011-05-31 07:28:30

+0

這取決於你決定什麼樣的應用程序,你想在...窗體應用程序託管它?控制檯應用? Web應用程序?我們不能告訴你,我們不知道你需要怎麼處理它 - 增加一些關於你對此的預期用途的更多信息。 (順便說下md5被認爲是非常弱!!) – Nathan 2011-05-31 07:29:37

回答

1

你需要把這個方法有些類中。例如,你可以用下面的內容創建一個控制檯應用程序:

using System; 
using System.Security.Cryptography; 
using System.Text; 

public class CryptoUtils 
{ 
    public static string CalculateMD5Hash(string strInput) 
    { 
     MD5 md5 = System.Security.Cryptography.MD5.Create(); 
     byte[] inputBytes = System.Text.Encoding.ASCII.GetBytes(strInput); 
     byte[] hash = md5.ComputeHash(inputBytes); 
     StringBuilder sb = new StringBuilder(); 
     for (int i = 0; i < hash.Length; i++) 
     { 
      sb.Append(hash[i].ToString("x2")); 
     } 
     return sb.ToString(); 
    } 
} 

class Program 
{ 
    static void Main() 
    { 
     var input = "some input"; 
     var md5 = CryptoUtils.CalculateMD5Hash(input); 
     Console.WriteLine(md5); 
    } 
} 

現在CryptoUtils類可以被放置在一個單獨的文件。

+2

我建議你可以使用UTF -8但不是ASCII。否則,你很難正確處理亞洲語言。 – 2011-05-31 07:35:32

+0

哦,如何改變它?以及如果我使用web應用程序或窗口窗體應用程序會導致什麼差異,因爲我不知道什麼是控制檯應用程序 – CutexBabies 2011-05-31 07:44:20

+1

@CutexBabies,我強烈建議您在.NET中學習一些基本的東西,瞭解不同類型的應用程序(web ,桌面,控制檯...),程序集,命名空間,類,...在計算MD5散列之前。您似乎缺乏一些非常基本的理解,如果沒有這些基礎,您將很難重複使用通過互聯網找到的代碼示例。 – 2011-05-31 07:46:05