.NET提供了安全支持,不用自己写MD5算法.
byte[] data = new byte[DATA_SIZE];// This is one implementation of the abstract class MD5.
MD5 md5 = new MD5CryptoServiceProvider();byte[] result = md5.ComputeHash(data);这样就可以了.

解决方案 »

  1.   

    不会对文件进行MD5,只会对文件的大小进行MD5吧 public string MD5Encrypt(string strText) 

    MD5 md5 = new MD5CryptoServiceProvider(); 
    byte[] result = md5.ComputeHash(System.Text.Encoding.Default.GetBytes(strText));    
    return System.Text.Encoding.Default.GetString(result); 

      

  2.   

    使用Des,MD5 加密.解密.字符串.文件  //加密字符串,注意strEncrKey的长度为8位(如果要增加或者减少key长度,调整IV的长度就是了) 
    public string DesEncrypt(string strText, string strEncrKey)  
      //解密字符串,注意strEncrKey的长度为8位(如果要增加或者减少key长度,调整IV的长度就是了) public string DesDecrypt(string strText,string sDecrKey) //加密数据文件,注意strEncrKey的长度为8位(如果要增加或者减少key长度,调整IV的长度就是了) public void DesEncrypt(string m_InFilePath,string m_OutFilePath,string strEncrKey) //解密数据文件,注意strEncrKey的长度为8位(如果要增加或者减少key长度,调整IV的长度就是了) public void DesDecrypt(string m_InFilePath,string m_OutFilePath,string sDecrKey) //MD5加密 public string MD5Encrypt(string strText) */   
    /****************************************************************************************** 
    * Cryptography class is for Cryptography 
    author:Jim 
    e_mail:[email protected] 
    * thanks: 
    * URI: 


    *****************************************************************************************/ 
    using System; 
    using System.Security.Cryptography; 
    using System.Text; 
    using System.IO; 
    using System.Windows.Forms ; namespace Netbee.Classes.Security 

    /// <summary> 
    ///Cryptography 
    /// </summary> 
    public class Cryptography 

    public Cryptography() 
    { } 
    /// <summary> 
    /// Encrypt the string 
    /// Attention:key must be 8 bits 
    /// </summary> 
    /// <param name="strText">string</param> 
    /// <param name="strEncrKey">key</param> 
    /// <returns></returns> 
    public string DesEncrypt(string strText, string strEncrKey) 

    byte[] byKey=null; 
    byte[] IV= {0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF}; 
    try 

    byKey = System.Text.Encoding.UTF8.GetBytes(strEncrKey.Substring(0,8)); 
    DESCryptoServiceProvider des = new DESCryptoServiceProvider(); 
    byte[] inputByteArray = Encoding.UTF8.GetBytes(strText); 
    MemoryStream ms = new MemoryStream(); 
    CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(byKey, IV), CryptoStreamMode.Write) ; 
    cs.Write(inputByteArray, 0, inputByteArray.Length); 
    cs.FlushFinalBlock(); 
    return Convert.ToBase64String(ms.ToArray()); 

    catch(System.Exception error) 

    MessageBox.Show(error.Message); 
    return "error:" +error.Message+"\r"; 


    /// <summary> 
    /// Decrypt string 
    /// Attention:key must be 8 bits 
    /// </summary> 
    /// <param name="strText">Decrypt string</param> 
    /// <param name="sDecrKey">key</param> 
    /// <returns>output string</returns> 
    public string DesDecrypt(string strText,string sDecrKey) 

    byte[] byKey = null; 
    byte[] IV= {0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF}; 
    byte[] inputByteArray = new Byte[strText.Length]; 
    try 

    byKey = System.Text.Encoding.UTF8.GetBytes(sDecrKey.Substring(0,8)); 
    DESCryptoServiceProvider des = new DESCryptoServiceProvider(); 
    inputByteArray = Convert.FromBase64String(strText); 
    MemoryStream ms = new MemoryStream(); 
    CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(byKey, IV), CryptoStreamMode.Write); 
    cs.Write(inputByteArray, 0, inputByteArray.Length); 
    cs.FlushFinalBlock(); 
    System.Text.Encoding encoding = new System.Text.UTF8Encoding(); 
    return encoding.GetString(ms.ToArray()); 

    catch(System.Exception error) 

    MessageBox.Show(error.Message); 
    return "error:"+error.Message+"\r"; 


    /// <summary> 
    /// Encrypt files 
    /// Attention:key must be 8 bits 
    /// </summary> 
    /// <param name="m_InFilePath">Encrypt file path</param> 
    /// <param name="m_OutFilePath">output file</param> 
    /// <param name="strEncrKey">key</param> 
    public void DesEncrypt(string m_InFilePath,string m_OutFilePath,string strEncrKey) 

    byte[] byKey=null; 
    byte[] IV= {0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF}; 
    try 

    byKey = System.Text.Encoding.UTF8.GetBytes(strEncrKey.Substring(0,8)); 
    FileStream fin = new FileStream(m_InFilePath, FileMode.Open, FileAccess.Read); 
    FileStream fout = new FileStream(m_OutFilePath, FileMode.OpenOrCreate, FileAccess.Write); 
    fout.SetLength(0); 
    //Create variables to help with read and write. 
    byte[] bin = new byte[100]; //This is intermediate storage for the encryption. 
    long rdlen = 0; //This is the total number of bytes written. 
    long totlen = fin.Length; //This is the total length of the input file. 
    int len; //This is the number of bytes to be written at a time. DES des = new DESCryptoServiceProvider(); 
    CryptoStream encStream = new CryptoStream(fout, des.CreateEncryptor(byKey, IV), CryptoStreamMode.Write); 
    //Read from the input file, then encrypt and write to the output file. 
    while(rdlen < totlen) 

    len = fin.Read(bin, 0, 100); 
    encStream.Write(bin, 0, len); 
    rdlen = rdlen + len; 
    } encStream.Close(); 
    fout.Close(); 
    fin.Close();   

    catch(System.Exception error) 

    MessageBox.Show(error.Message.ToString()); } 

    /// <summary> 
    /// Decrypt files 
    /// Attention:key must be 8 bits 
    /// </summary> 
    /// <param name="m_InFilePath">Decrypt filepath</param> 
    /// <param name="m_OutFilePath">output filepath</param> 
    /// <param name="sDecrKey">key</param> 
    public void DesDecrypt(string m_InFilePath,string m_OutFilePath,string sDecrKey) 

    byte[] byKey = null; 
    byte[] IV= {0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF}; 
    try 

    byKey = System.Text.Encoding.UTF8.GetBytes(sDecrKey.Substring(0,8)); 
    FileStream fin = new FileStream(m_InFilePath, FileMode.Open, FileAccess.Read); 
    FileStream fout = new FileStream(m_OutFilePath, FileMode.OpenOrCreate, FileAccess.Write); 
    fout.SetLength(0); 
    //Create variables to help with read and write. 
    byte[] bin = new byte[100]; //This is intermediate storage for the encryption. 
    long rdlen = 0; //This is the total number of bytes written. 
    long totlen = fin.Length; //This is the total length of the input file. 
    int len; //This is the number of bytes to be written at a time. DES des = new DESCryptoServiceProvider(); 
    CryptoStream encStream = new CryptoStream(fout, des.CreateDecryptor(byKey, IV), CryptoStreamMode.Write); 
    //Read from the input file, then encrypt and write to the output file. 
    while(rdlen < totlen) 

    len = fin.Read(bin, 0, 100); 
    encStream.Write(bin, 0, len); 
    rdlen = rdlen + len; 
    } encStream.Close(); 
    fout.Close(); 
    fin.Close(); } 
    catch(System.Exception error) 

    MessageBox.Show( "error:"+error.Message); 


    /// <summary> 
    /// MD5 Encrypt 
    /// </summary> 
    /// <param name="strText">text</param> 
    /// <returns>md5 Encrypt string</returns> 
    public string MD5Encrypt(string strText) 

    MD5 md5 = new MD5CryptoServiceProvider(); 
    byte[] result = md5.ComputeHash(System.Text.Encoding.Default.GetBytes(strText)); 
    return System.Text.Encoding.Default.GetString(result); 



      
      

  3.   

    MD5不会对文件进行加密,只会对文件的大小进行加密
    主要是把字符串變成一串的數字,后又解譯回來前面幾位都已提供了例子了 
    樓主可以在google找一下就知
      

  4.   

    唉.
    打个简单比方.
    我上传了一个50m的文件.
    上传后我把它的内容用MD5算出来.
    如果生成的长字符串和没上传前生成的一样.
    表明这个文件上传过程中内容一个字节也没出现错误.
    我这里有一个用C++做的的验证程序.
    但是我想知道用C#怎么实现.
    用STREAM取得这个文件流.把内容用MD5算一次.
    生成的长字符串就是了.
      

  5.   

    to  lxy0423((zjl)) 
    MD5只能加密不能解密。不可能会再解译回来的。
    要是能解译回来那就不是MD5了。
      

  6.   

    ----------------
    MD5应该是哈希的,是单向的,不能够恢复的吧?
    ----------------MD5 是单向的,楼主用它不是用来加密,是想生成一个 文件 的内容摘要,一旦文件发生任何更改 再计算出来的MD5 就和以前的不一样了,就能发现文件被人窜改过。我也想用这个给些视频文件(几G大小一个 :( )算MD5 , 可是不知如何实现。在网上倒是发现勒一个老外用C# 写的一个叫winmd5 的小程序,很好用算个6xxM的 iso 就十来秒,可惜不知到是如何实现的。 期待高手ing..............................
      

  7.   

    哦,这个意思啊,那是可以的。具体怎么做我就不给什么例子了,请参见:http://expert.csdn.net/Expert/TopicView1.asp?id=2642527
    http://expert.csdn.net/Expert/TopicView1.asp?id=2645415讨论的是RSA,不过用MD5的话方法也应该是比较类似的。具体的例子嘛,你可以参见IDE里面按Alt-H、I,然后将下面一行的文字粘贴到那个输入框里面:
    MD5CryptoServiceProvider 类, 示例如果有什么问题再来问。
      

  8.   

    刚写的代码,还热乎呢,对你一定有用.用的是.NET2003 
    注意命名空间.System.IO.FileStream filestream=new FileStream("e:\\temp\\temp.iso",FileMode.Open,FileAccess.Read);
    MD5 md5 = new MD5CryptoServiceProvider();
    byte[] result = md5.ComputeHash(filestream);
    string bs1="";
    for(int a=0;a<result.Length;a++)
    {
    bs1+=result[a].ToString("X2");
    }
    this.Text=bs1;