一个MD5加密的问题
MD5加密后怎么解密啊? 
 比如用户注册,密码是用MD5加密的,下次此用户登录的时候怎么比较密码是否一致呢? 
 我用的是。NET自带的类写的加密,代码如下: 
 string   MD5str   =   FormsAuthentication.HashPasswordForStoringInConfigFile(TextBox2.Text,    "MD5 "); 
                         SqlConnection   conn   =   new   SqlConnection( "server=.;uid=sa;database=pubs "); 
                         SqlCommand   com   =   new   SqlCommand( "insert   into   userLogin(uname,upwd)   values( ' "+TextBox1.Text+ " ', ' "+MD5str+ " ') ",conn); 
                         conn.Open(); 
                         com.ExecuteNonQuery(); 
                         conn.Close();
------解决方案--------------------MD5是不能逆向运算的 
 你把用户输入的密码也进行MD5加密 
 再和数据库中的进行比较
------解决方案--------------------登陆时,把登陆密码加密后到数据库中去比较
------解决方案--------------------MD5是不可逆的. 
 将密码MD5后保存在DB. 
 当用户登陆时, 将用户提交的密码MD5后与DB的密码对比, 一样的话就表示用户提交正确! 
 就这么简单.
------解决方案--------------------给你转贴一个   
 using  System.IO;     
 using  System.Text;       
 //方法     
 //加密方法     
 public    string  Encrypt(string  pToEncrypt,  string  sKey)     
 {     
            DESCryptoServiceProvider  des  =  new  DESCryptoServiceProvider();     
            //把字符串放到byte数组中     
                  //原来使用的UTF8编码,我改成Unicode编码了,不行     
            byte[]  inputByteArray  =  Encoding.Default.GetBytes(pToEncrypt);     
            //byte[]  inputByteArray=Encoding.Unicode.GetBytes(pToEncrypt);       
            //建立加密对象的密钥和偏移量     
            //原文使用ASCIIEncoding.ASCII方法的GetBytes方法     
            //使得输入密码必须输入英文文本     
            des.Key  =  ASCIIEncoding.ASCII.GetBytes(sKey);     
            des.IV  =  ASCIIEncoding.ASCII.GetBytes(sKey);     
            MemoryStream  ms  =  new  MemoryStream();     
            CryptoStream  cs  =  new  CryptoStream(ms,  des.CreateEncryptor(),CryptoStreamMode.Write);     
            //Write  the  byte  array  into  the  crypto  stream     
            //(It  will  end  up  in  the  memory  stream)     
            cs.Write(inputByteArray,  0,  inputByteArray.Length);     
            cs.FlushFinalBlock();     
            //Get  the  data  back  from  the  memory  stream,  and  into  a  string     
            StringBuilder  ret  =  new  StringBuilder();     
            foreach(byte  b  in  ms.ToArray())     
                        {     
                        //Format  as  hex     
                        ret.AppendFormat( "{0:X2} ",  b);     
                        }     
            ret.ToString();     
            return  ret.ToString();     
 }       
 //解密方法     
 public    string  Decrypt(string  pToDecrypt,  string  sKey)     
 {     
            DESCryptoServiceProvider  des  =  new  DESCryptoServiceProvider();       
            //Put  the  input  string  into  the  byte  array     
            byte[]  inputByteArray  =  new  byte[pToDecrypt.Length  /  2];     
            for(int  x  =  0;  x   <  pToDecrypt.Length  /  2;  x++)     
            {