我想在用户录入密码存如数据库进行加密,数据库显示的是我加密后的密码,输出时我再进行解密
    这个功能怎么实现,给个列子   要代码           md5好像只可以加密不能解密,我修改密码就不能实现

解决方案 »

  1.   

    md5加密,登录时加密与数据库中数据比较
    sqldatareader dr=cmd.ExecuteReader();
    if(dr.Read())
    {}
    其他des,sha等加密解密,搜索很多
    public static string GetMD5Hash(String input)
      {
      MD5 md5 = new MD5CryptoServiceProvider();
      byte[] res = md5.ComputeHash(Encoding.Default.GetBytes(input), 0, input.Length);
      char[] temp = new char[res.Length];
      System.Array.Copy(res, temp, res.Length);
      return new String(temp);
      }
    FormsAuthentication.HashPasswordForStoringInConfigFile(PWD, "MD5");
      

  2.   

    纯粹是翻译问题,对于中国传统概念上的所谓加密解密,md5、sha之类的就根本不算。这只能用“混淆”,或者更直接的词“散列”来说明。
      

  3.   


    是的。另外我可以补充一下,其实很多有着几十年历史的世界流行的系统也不是所谓的加密解密来处理用户密码的。比如使用DES加密解密算法,系统是程序是使用用户输入的密码作为密钥来加密一段固定的文字,然后把加密的结果保存到数据库中。然后当用户登录时,同样地加密一次,然后把密文跟数据库中保存的密文来比较。对于MD5等散列算法,它没有什么密文可言,它得到的是一个固定长度(比如32个字节)的散列值。
      

  4.   

    http://dotnet.aspx.cc/article/7ae7d20a-a5da-4303-ac2d-32046be4d086/read.aspx
      

  5.   

    不是有个个类专门用来加密嘛?方法如下:public string Password
    {
                set { _password = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(value, "md5");}
    get{return _password;}
    }至于判断是否登陆,就匹配加密后的字符串不就行了?
      

  6.   

    MD5是数字指纹,一般用于数字签名,不是加密数据的算法。
    你可以考虑用DES或RSA,c#已经做好支持了,使用就可以,des更好一些
      

  7.   

    在App_Code 里面放入一下代码,然后调用 key 设置成8位,例如 "alsges12" 英文字母和数字结合 单个也可以public static string Encrypt(string pToEncrypt, string sKey)//-------------------------------------------加密对象
        {
            DESCryptoServiceProvider des = new DESCryptoServiceProvider(); //把字符串放到byte数组中        byte[] inputByteArray = Encoding.Default.GetBytes(pToEncrypt);
            //byte[] inputByteArray=Encoding.Unicode.GetBytes(pToEncrypt);        des.Key = ASCIIEncoding.ASCII.GetBytes(sKey); //建立加密对象的密钥和偏移量
            des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);  //原文使用ASCIIEncoding.ASCII方法的GetBytes方法
            MemoryStream ms = new MemoryStream();   //使得输入密码必须输入英文文本
            CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);        cs.Write(inputByteArray, 0, inputByteArray.Length);
            cs.FlushFinalBlock();        StringBuilder ret = new StringBuilder();
            foreach (byte b in ms.ToArray())
            {
                ret.AppendFormat("{0:X2}", b);
            }
            ret.ToString();
            return ret.ToString();
        }    public static string Decrypt(string pToDecrypt, string sKey)//-------------------------------------------------解密对象
        {
            DESCryptoServiceProvider des = new DESCryptoServiceProvider();        byte[] inputByteArray = new byte[pToDecrypt.Length / 2];
            for (int x = 0; x < pToDecrypt.Length / 2; x++)
            {
                int i = (Convert.ToInt32(pToDecrypt.Substring(x * 2, 2), 16));
                inputByteArray[x] = (byte)i;
            }        des.Key = ASCIIEncoding.ASCII.GetBytes(sKey); //建立加密对象的密钥和偏移量,此值重要,不能修改
            des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
            MemoryStream ms = new MemoryStream();
            CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);        cs.Write(inputByteArray, 0, inputByteArray.Length);
            cs.FlushFinalBlock();        StringBuilder ret = new StringBuilder(); //建立StringBuild对象,CreateDecrypt使用的是流对象,必须把解密后的文本变成流对象        return System.Text.Encoding.Default.GetString(ms.ToArray());
        }调用如下感谢您使用            " 请点击以下确认连接,以完成身份验证:<br>"
                + " tiaozhuan.aspx?spring="+DataHelp.Encrypt(name,"alsges12")+"&summer="+DataHelp.Encrypt(email,"alsges12") +
                "<br> 5分钟之内注册有效 (如果不能点击该链接地址,请复制并粘贴到浏览器的地址输入框)";这个是加密,相信解密你也应该懂了
      

  8.   

    protected void Button1_Click(object sender, EventArgs e)//加密 文本框内容
        {
            string str = DataHelp.Encrypt(TextBox1.Text, "alsges12");
            Response.Write(str);
        }
        protected void Button2_Click(object sender, EventArgs e)//解密 文字(上述文本框加密好的内容)  密钥 必须相同 都是 "alsges12"
        {
            string dec = DataHelp.Decrypt(TextBox1.Text, "alsges12");
            Response.Write(dec);
        }
      

  9.   

    DataHelp是存放加密函数的类名 - -!