请教,以前写过一个,忘记怎么写了,现在来搜索好像没有找到合适的。我是设计了个用户注册和登录的页面,密码表单ID是Password,点击注册或者登录后,变量获得表单的密码的值,加密的过程怎么写,请教,谢谢。string sPassword = Password.Text;然后这个sPassword怎么处理才能被MD5加密?要32位加密的。

解决方案 »

  1.   


            /// <summary>
            /// 获取一个字符串内容的MD5哈希值
            /// </summary>
            /// <param name="value"></param>
            /// <returns></returns>
            public static string GetMD5HashCode(this string value)
            {
                MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
                byte[] data = md5.ComputeHash(Encoding.UTF8.GetBytes(value));
                md5.Clear();
                return BitConverter.ToString(data).Replace("-", "");
            }
    要引用
    using System.Text;
    using System.Security.Cryptography;
      

  2.   


    谢谢,输入的参数是value吧?那返回的参数是哪个呢?这个是32位加密了吧?UTF-8和GB2312加密方式最后存在数据库里跟数据库的GB2312没有关系吧?
      

  3.   


    这个代码放到点击按钮后触发的 protected void CreateUserButton_Click(object sender, EventArgs e)可以吧?
      

  4.   

    上面函数参数前面的this可以去掉,如果你不了解“扩展方法”的话。就当普通函数用。用法是
    string sPassword = Password.Text; 
    string md5Password = GetMD5HashCode(sPassword);
    跟编码没什么关系,就是不同编码MD5计算出来的值可能会不一样。
    都用我上面给的那个,就可以了。不用考虑数据库。
      

  5.   


     protected void CreateUserButton_Click(object sender, EventArgs e)
    {
        string getMD5=GetMD5HashCode(txtPwd.Text)
    }
      

  6.   


    谢谢,我就想用这个简单的,呵呵。string md5Password = GetMD5HashCode(sPassword);
      

  7.   

    汗,怎么提示上下文不存在“GetMD5HashCode”
      

  8.   

    哦,你是说:public static string GetMD5HashCode(this string value)
            {
                string md5Password = GetMD5HashCode(sPassword);
            }是吧。
      

  9.   

    我给你的是一个静态函数,你应该放到你的代码能调用的地方。
    调用时也可以通过类名.GetMD5HashCode(...)的方式来调用public class test
    {
             public static string GetMD5HashCode(this string value)         {             MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();             byte[] data = md5.ComputeHash(Encoding.UTF8.GetBytes(value));             md5.Clear();             return BitConverter.ToString(data).Replace("-", "");         } 
     protected void CreateUserButton_Click(object sender, EventArgs e) {     string getMD5=GetMD5HashCode(txtPwd.Text) } }
    你基础还没打好呢,再学习学习吧。
      

  10.   

    这个public static string GetMD5HashCode(this string value)
                {
                    string sPassword = GetMD5HashCode(Password.Text);
                }能放到protected void CreateUserButton_Click(object sender, EventArgs e)里面吗?
      

  11.   


    当然不能了,两个都是函数,应该放在class下面
      

  12.   

    我添加了,好像有点问题。
    public static string GetMD5HashCode(this string value)
            {
                MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
                byte[] data = md5.ComputeHash(Encoding.UTF8.GetBytes(value));
                md5.Clear();
                return BitConverter.ToString(data).Replace("-", "");
            }
    这个里面的value和data是不是参数,要不要改呢?
      

  13.   

    GetMD5HashCode只有一个参数就是value,这个value是形参,data只是里面的局部变量;你外部调用不用改这里,也不用把变量命名成value,直接
    string md5Password = GetMD5HashCode("你要加密的字符串");就行了。我都说不明白了!你不行就加咱QQ吧 46317239
      

  14.   


    LS给的方法已经写成了扩展方法的形式
    这个方法的类 需要静态类,估计LZ没怎么接触过
    比如class static ChatHelper{
       public static string GetMD5HashCode(this string value)
            {
                MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
                byte[] data = md5.ComputeHash(Encoding.UTF8.GetBytes(value));
                md5.Clear();
                return BitConverter.ToString(data).Replace("-", "");
            }
    }
    然后调用可以用
    string md5pwd=passward.text.GetMD5HashCode();如果LZ实在不会把这个方法的this关键词去掉然后把整个方法放到你的aspx.cs文件中  ,与你的xxx事件是并列的
    然后用
    string md5Password = GetMD5HashCode("你要加密的字符串");
    这样的方法调用
      

  15.   

    是的   这个扩展方法所在的类必须是非泛型并且静态LZ你可以把参数里面的this关键词去掉就可以了