2011-05-31 34 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