C# 中使用Md5加密。。整理版。。。

 

 

 

//******************************       方法一    *********************************************//

 

//使用命名空间
using System.Text;
using System.Security.Cryptography;

//创建getMd5方法以获得userPwd的Md5值
public string getMd5(string userPwd)
{

//获取userPwd的byte类型数组
byte[] byteUserPwd = Encoding.UTF8.GetBytes(userPwd);

//实例化MD5CryptoServiceProvider
MD5CryptoServiceProvider myMd5 = new MD5CryptoServiceProvider();

// byte类型数组的值转换为 byte类型的Md5值
byte[] byteMd5UserPwd = myMd5.ComputeHash(byteUserPwd);

//将byte类型的Md5值转换为字符串
string strMd5Pwd = Encoding.Default.GetString(byteMd5UserPwd).Trim();

//返回Md5字符串
return strMd5Pwd;
}

 

 

修改版  去闯乱码

 

//使用命名空间
    using System.Text;
    using System.Security.Cryptography;

    //创建getMd5方法以获得userPwd的Md5值
    public string getMd5(string userPwd)
    {

        //获取userPwd的byte类型数组
        byte[] byteUserPwd = Encoding.UTF8.GetBytes(userPwd);

        //实例化MD5CryptoServiceProvider
        MD5CryptoServiceProvider myMd5 = new MD5CryptoServiceProvider();

        // byte类型数组的值转换为 byte类型的Md5值
        byte[] byteMd5UserPwd = myMd5.ComputeHash(byteUserPwd);

        //将byte类型的Md5值转换为字符串
        string strMd5Pwd = "";
        for (int i = 0; i < byteMd5UserPwd.Length; i++)
        {
            strMd5Pwd += byteMd5UserPwd[i].ToString("X");
            //大写的X,得到的strMd5Pwd是大写字母和数字组成的字符串
            //小写的x,得到的strMd5Pwd是小写字母和数字组成的字符串
        }

        //返回Md5字符串
        return strMd5Pwd;
    }

 

 

 

//******************************       方法二    *********************************************//

 

首先在界面中引入:using System.Web.Security;

假设密码对话框名字password,对输入的密码加密后存入变量pwd中,语句如下:

 string pwd = FormsAuthentication.HashPasswordForStoringInConfigFile(password.Text, "MD5");

如果要录入则录入pwd,这样数据库实际的密码为202*****等乱码了。

如果登录查询则要:

select username,password from users where username='"+ UserName.Text +"' and password='"+ pwd +"'

因为MD5不能解密,只能把原始密码加密后与数据库中加密的密码比较

 

 

//******************************       方法三   *********************************************//

C# MD5 加密方法 16位或32位

  public string md5(string str,int code)

  {
    if(code==16) //16位MD5加密(取32位加密的9~25字符)
   {
       return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str,"MD5").ToLower().Substring(8,16) ;
   } 
   else//32位加密
   {
       return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str,"MD5").ToLower();
   } 
 }

 

 

 

 

//******************************       简单应用   *********************************************//

 C# MD5加密    登录验证
using System.Security.Cryptography;


private void btnOK_Click(object sender, System.EventArgs e)
{
   string strConn = "server=192.168.0.51;database=chengheng;User id=sa; password=123";
   if(texName.Text.Trim()=="")
   {
    this.RegisterStartupScript("sf","<script language='javascript'>alert('用户名不能为空');document.all('texName').focus()</script>");
    return;
   }
   else if(texPassword.Text.Trim()=="")
   {
    this.RegisterStartupScript("sfs","<script language='javascript'>alert('密码不能为空');document.all('texPassword').focus()</script>");
    return;
   }
   else
   {
    //将获取的密码加密与数据库中加了密的密码相比较
    byte[] by = md5.ComputeHash(utf.GetBytes(texPassword.Text.Trim()));
    string resultPass = System.Text.UTF8Encoding.Unicode.GetString(by);
    conn.ConnectionString=strConn;
    SqlCommand comm = new SqlCommand();
    string name = texName.Text.Trim().ToString();
    comm.CommandText="select Ruser_pwd,Ruser_nm from Ruser where Accountno = @name";
    comm.Parameters.Add("@name",SqlDbType.NVarChar,40);
    comm.Parameters["@name"].Value=name;
    try
    {    
     conn.Open();
     comm.Connection=conn;
     SqlDataReader dr=comm.ExecuteReader();
     if(dr.Read())
     {
      //用户存在,对密码进行检查
      if(dr.GetValue(0).Equals(resultPass))
      {
       string user_name=dr.GetValue(1).ToString();
       string user_Accountno=texName.Text.Trim();
       Session["logon_name"]=user_name;
       Session["logon_Accountno"]=user_Accountno;
       //登录成功,进行页面导向

      }
      else
      {
       this.RegisterStartupScript("wp","<script language='javascript'>alert('密码错误,请检查。')</script>");
      }
     
     }
     else
     {
      this.RegisterStartupScript("nu","<script language=javascript>alert('用户名不存在,请检查。')</script>");
     }
    }
    catch(Exception exec)
    {
     this.RegisterStartupScript("wc","<script language=javascript>alert('网络连接有异,请稍后重试。')</script>");
    }
    finally
    {
     conn.Close();
    }
   }
}

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值