方法一

首先,先简单介绍一下MD5

MD5的全称是message-digest algorithm 5(信息-摘要算法,在90年代初由mit laboratory for computer science和rsa data security inc的ronald l. rivest开发出来, 经md2、md3和md4发展而来。

MD5具有很好的安全性(因为它具有不可逆的特征,加过密的密文经过解密后和加密前的东东相同的可能性极小)

引用 using System.Security.Cryptography; using System.Text;

具体代码如下(写在按钮的Click事件里): byte[] result = Encoding.Default.GetBytes(this.tbPass.Text.Trim());    //tbPass为输入密码的文本框 MD5 md5 = new MD5CryptoServiceProvider(); byte[] output = md5.ComputeHash(result); this.tbMd5pass.Text = BitConverter.ToString(output).Replace("-","");  //tbMd5pass为输出加密文本的文本框

方法二

C# md5加密(上) string a; //加密前数据 string b; //加密后数据 b=System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(a,"MD5")

using   System; using   System.Security.Cryptography;

方法2

public   static   string   GetMD5(string   myString)

{

MD5   md5     =   new   MD5CryptoServiceProvider(); byte[]   fromData   =   System.Text.Encoding.Unicode.GetBytes(myString); byte[]   targetData   =   md5.ComputeHash(fromData); string   byte2String   =   null;

for   (int   i=0;   i<targetData.Length;   i++)   { byte2String   +=   targetData[i].ToString("x");

}

return   byte2String;

}

using   System.Security.Cryptography;

///   <summary>

///   给一个字符串进行MD5加密

///   </summary>

///   <param   name="strText">待加密字符串</param>

///   <returns>加密后的字符串</returns> public   static   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);

}

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; pwd=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();

}

}

}

方法三 C# MD5加密

C#开发笔记   一、C# MD5-16位加密实例,32位加密实例(两种方法)

环境:vs.net2005/sql server2000/xp测试通过 1.MD5 16位加密实例 using System; using System.Collections.Generic; using System.Text; using System.Security.Cryptography;

namespace md5

{

class Program

{

static void Main(string[] args)

{

Console.WriteLine(UserMd5("8"));

Console.WriteLine(GetMd5Str("8"));

}

/**//// <summary>

/// MD5 16位加密 加密后密码为大写

/// </summary>

/// <param name="ConvertString"></param>

/// <returns></returns>

public static string GetMd5Str(string ConvertString)

{

MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();

string t2 = BitConverter.ToString(md5.ComputeHash(UTF8Encoding.Default.GetBytes(ConvertString)), 4, 8);

t2 = t2.Replace("-", "");

return t2;

}

/**//// <summary>

/// MD5 16位加密 加密后密码为小写

/// </summary>

/// <param name="ConvertString"></param>

/// <returns></returns>

public static string GetMd5Str(string ConvertString)

{

MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();

string t2 = BitConverter.ToString(md5.ComputeHash(UTF8Encoding.Default.GetBytes(ConvertString)), 4, 8);

t2 = t2.Replace("-", "");

t2 = t2.ToLower();

return t2;

}

/**//// <summary>

/// MD5 32位加密

/// </summary>

/// <param name="str"></param>

/// <returns></returns>

static  string UserMd5(string str)

{

string cl = str;

string pwd = "";

MD5 md5 = MD5.Create();

//实例化一个md5对像

// 加密后是一个字节类型的数组,这里要注意编码UTF8/Unicode等的选择 

byte[] s = md5.ComputeHash(Encoding.UTF8.GetBytes(cl));

// 通过使用循环,将字节类型的数组转换为字符串,此字符串是常规字符格式化所得

for (int i = 0; i < s.Length; i++)

{

// 将得到的字符串使用十六进制类型格式。格式后的字符是小写的字母,如果使用大写(X)则格式后的字符是大写字符

pwd = pwd + s[i].ToString("X");

}

return pwd;

}

}

}

using System.Security.Cryptography; using System.Text;

public static string StringToMD5Hash(string inputString)

{

MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();

byte[] encryptedBytes = md5.ComputeHash(Encoding.ASCII.GetBytes(inputString));             StringBuilder sb = new StringBuilder();

for (int i = 0; i < encryptedBytes.Length; i++)

{

sb.AppendFormat("{0:x2}", encryptedBytes[i]);

}

return sb.ToString();

}

二、首先在界面中引入: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();

}

}

四、做一个网站时,必然涉及用户登录,用户登录必然涉及密码,密码必然涉及安全,安全必然涉及加密。 加密现时最流行也是据说最安全的算法是MD5算法,MD5是一种不可逆的算法,也就是 明文经过加密后,根据加密过的密文无法还原出明文来。 目前有好多网站专搞MD5破密,百度上搜一下MD5就搜出一大堆了,今天早上无聊试了几个破密网站,6位以内纯数字密码的MD5密文可以还原出明文,长点的或带字符的就不行了。他们是采用穷举对比的,就是说把收录到的明文和密文放到数据库里,通过密文的对比来确定明文,毕竟收录的数据有限,所以破解的密码很有限。 扯远了,搞破密MD5需要大量的MONEY,因为要一个运算得超快的计算机和一个查找性能超好的数据库和超大的数据库收录。但搞加密就比较简单。以下是我用C#写的一个MD5加密的方法,用到.NET中的方法, 通过MD5_APP.StringToMD5(string str, int i)可以直接调用:

public class MD5_APP

{

public MD5_APP()

{

}

public static string StringToMD5(string str, int i)

{

//获取要加密的字段,并转化为Byte[]数组

byte[] data = System.Text.Encoding.Unicode.GetBytes(str.ToCharArray());

//建立加密服务

System.Security.Cryptography.MD5 md5 = new System.Security.Cryptography.MD5CryptoServiceProvider();

//加密Byte[]数组

byte[] result = md5.ComputeHash(data);

//将加密后的数组转化为字段

if (i == 16 && str != string.Empty)

{

return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str, "MD5").ToLower().Substring(8, 16);

}

else if (i == 32 && str != string.Empty)

{

return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str, "MD5").ToLower();

}

else

{

switch (i)

{

case 16: return "000000000000000";

case 32: return "000000000000000000000000000000";

default: return "请确保调用函数时第二个参数为16或32";

}

}

}

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/shenghui188/archive/2010/03/28/5423959.aspx

用C#实现MD5的加密(转载)的更多相关文章

  1. JS分段上传文件(File)并使用MD5.js加密文件段用来后台校验

    HTML <form method="POST" name="form1" action="/mupload/upload/" enc ...

  2. java中使用MD5进行加密 BASE64Encoder 编码

    原文地址:http://www.cnblogs.com/weiwangnuanyang/articles/4326336.html java中使用MD5进行加密     在各种应用系统的开发中,经常需 ...

  3. Java对字符串使用MD5进行加密(亲测有效)

    转自:https://blog.csdn.net/jay314159/article/details/4918358 前言: MD5即Message-Digest Algorithm 5(信息-摘要算 ...

  4. MD5 十六进制加密

    MD5的加密方法很多,今天说下MD5的十六进制加密···先贴方法···· class Program { static void Main(string[] args) { //202cb962ac5 ...

  5. ASP.NET中MD5的加密方式很简单

    在ASP.NET中MD5的加密方式很简单,代码如下: FormsAuthentication.HashPasswordForStoringInConfigFile(str, "MD5&quo ...

  6. php 结合md5的加密,解密方法

    php 结合md5的加密,解密方法 张映 发表于 2012-06-28 分类目录: php 标签:md5, php 最近在整理代码发现了一个不错的东西,结合md5的加解密算法.网上关于php结合md5 ...

  7. java中使用MD5进行加密

    java中使用MD5进行加密     在各种应用系统的开发中,经常需要存储用户信息,很多地方都要存储用户密码,而将用户密码直接存储在服务器上显然是不安全的,本文简要介绍工作中常用的 MD5加密算法,希 ...

  8. MD5 不可逆加密,Des对称可逆加密 ,RSA非对称可逆加密 ,数字证书 SSL

    :MD5 不可逆加密2:Des对称可逆加密3:RSA非对称可逆加密4:数字证书 SSL Anker_张(博客园)http://www.cnblogs.com/AnkerZhang/ 1:MD5 不可逆 ...

  9. iOS HmacSHA1加密 和 MD5 Base64加密 --iOS开发系列---项目中成长的知识五

    项目中开发中需要对一些数据进行加密后和服务器验证是否是我们客户端发出的请求! 方案是服务器定的,使用HmacSHA1加密和MD5 Base64加密 加密过程比较复杂 1.获取格林威治时间 2.用bas ...

  10. 使用okHttp登录、Md5密码加密

    1.使用okHttp3登录 2.Md5密码加密 3.完整代码 4.项目案例 使用okHttp3登录: 使用okHttp3之前要在build.gradle引入okHttp3的依赖(顺便引入解析数据的gs ...

随机推荐

  1. 多线程条件通行工具——AbstractQueuedSynchronizer

    本文原创,转载请注明出处! 参考文章: <"JUC锁"03之 公平锁(一)> <"JUC锁"03之 公平锁(二)> AbstractOw ...

  2. IIC驱动移植在linux3.14.78上的实现和在linux2.6.29上实现对比(deep dive)

    首先说明下为什么写这篇文章,网上有许多博客也是介绍I2C驱动在linux上移植的实现,但是笔者认为他们相当一部分没有分清所写的驱动时的驱动模型,是基于device tree, 还是基于传统的Platf ...

  3. python基础

    内容概要: 一.python2 or python3 目前大多使用python2.7,随着时间的推移,python3将会成为python爱好者的主流. python2和3区别: 1.PRINT IS ...

  4. 自定义鼠标光标cursor

    通过css属性 Cursor:url()自定义鼠标光标. {cursor:url('图标路径'),default;} url是自定义鼠标图标路径 default指的是定义默认的光标(通常是一个箭头), ...

  5. __Block与__Weak区别

    一.__block理解: Blocks可以访问局部变量,但是不能修改, 声明block的时候实际上是把当时的临时变量又复制了一份, 在block里即使修改了这些复制的变量,也不影响外面的原始变量.即所 ...

  6. 微信小程序监控 - HotApp统计

    HotApp小程序统计,第一个专业的微信第三方小程序监控统计工具 1.什么是HotApp小程序统计 HotApp小程序统计是第一个微信第三方小程序统计工具,就像做android 和 ios开发的人知道 ...

  7. 记:MySQL 5.7.3.0 安装 全程截图

    前言: 下一个班快讲MySQL数据库了,正好把服务器里面的MySQL卸了重装了一下. 截个图,作为笔记.也正好留给需要的朋友们. 目录: 下载软件 运行安装程序 安装程序欢迎界面 许可协议 查找更新 ...

  8. [Hadoop in Action] 第6章 编程实践

    Hadoop程序开发的独门绝技 在本地,伪分布和全分布模式下调试程序 程序输出的完整性检查和回归测试 日志和监控 性能调优   1.开发MapReduce程序   [本地模式]        本地模式 ...

  9. window7系统怎么找到开始运行命令

    右击开始->属性->开始菜单->自定义>点击运行命令(选择)->确定

  10. hadoop 2.4 遇到的问题

    不管出什么问题,首先查看日志. 在启动过hadoop的前提下,打开浏览器,输入http://localhost:50070 点击Utilities下的logs,选择hadoop-root-datano ...