`
fastwind
  • 浏览: 324491 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

ASP.Net中MD5和SHA1加密的几种方法

阅读更多

首先简单介绍一下MD5和SHA1:

MD5的全称是Message-Digest Algorithm 5(信息-摘要算法),在90年代初由Mit Laboratory for Computer Science和Rsa data security inc的Ronald l. rivest开发出来,经md2、md3和md4发展而来。它的作用是让大容量信息在用数字签名软件签署私人密匙前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的大整数)。不管是md2、md4还是md5,它们都需要获得一个随机长度的信息并产生一个128位的信息摘要。

加密哈希函数将任意长度的二进制字符串映射为固定长度的小型二进制字符串。加密哈希函数有这样一个属性:在计算上不大可能找到散列为相同的值的两个不同的输入;也就是说,两组数据的哈希值仅在对应的数据也匹配时才会匹配。数据的少量更改会在哈希值中产生不可预知的大量更改。所以你很难从加密后的文字中找到蛛丝马迹。


SHA1的全称是Secure Hash Algorithm(安全哈希算法)


MD5 算法的哈希值大小为 128 位。而SHA1 算法的哈希值大小为 160 位。两种算法都是不可逆。


虽说2004年8月17日的美国加州圣巴巴拉的国际密码学会议(Crypto’2004)上,来自中国山东大学的王小云教授做了破译MD5、HAVAL-128、 MD4和RIPEMD算法的报告,公布了MD系列算法的破解结果。宣告了固若金汤的世界通行密码标准MD5的堡垒轰然倒塌,引发了密码学界的轩然大波。但是我觉得对于我们做普通的软件来说,这个加密安全程度已经足够使用了。


我们平常用的最多的无非就是加密用户密码,把加密好的密码存储到数据库中,进行密码比较的时候,把用户输入的密码再进行加密,然后与数据库中的密文进行比较。至于asp.net类中是如何实现加密算法的,这个我们不需要关心,会用就行了。


下面就是Asp.net中几种加密方法。加密算法有两种,也就是上面提到的MD5和SHA1,这里我举的例子是以MD5为例,SHA1大致相同,只是使用的类不一样。

MD5 相关类:

System.Security.Cryptography.MD5

System.Security.Cryptography.MD5CryptoServiceProvider()

System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(strSource, "MD5")



SHA1相关类:

System.Security.Cryptography.SHA1

System.Security.Cryptography.SHA1CryptoServiceProvider()

System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(strSource, "SHA1")


方法如下:(用的vs2005)




1/**//// <summary>
 2 /// 方法一:通过使用 new 运算符创建对象
 3 /// </summary>
 4 /// <param name="strSource">需要加密的明文</param>
 5 /// <returns>返回16位加密结果,该结果取32位加密结果的第9位到25位</returns>
 6 public string Get_MD5_Method1(string strSource)
 7 {
 8 //new
 9 System.Security.Cryptography.MD5 md5 = new System.Security.Cryptography.MD5CryptoServiceProvider();
10
11 //获取密文字节数组
12 byte[] bytResult = md5.ComputeHash(System.Text.Encoding.Default.GetBytes(strSource));
13
14 //转换成字符串,并取9到25位
15 string strResult = BitConverter.ToString(bytResult, 4, 8);
16 //转换成字符串,32位
17 //string strResult = BitConverter.ToString(bytResult);
18
19 //BitConverter转换出来的字符串会在每个字符中间产生一个分隔符,需要去除掉
20 strResult = strResult.Replace("-", "");
21 return strResult;
22 }
23
24 /**//// <summary>
25 /// 方法二:通过调用特定加密算法的抽象类上的 Create 方法,创建实现特定加密算法的对象。
26 /// </summary>
27 /// <param name="strSource">需要加密的明文</param>
28 /// <returns>返回32位加密结果</returns>
29 public string Get_MD5_Method2(string strSource)
30 {
31 string strResult = "";
32
33 //Create
34 System.Security.Cryptography.MD5 md5 = System.Security.Cryptography.MD5.Create();
35
36 //注意编码UTF8、UTF7、Unicode等的选择 
37 byte[] bytResult = md5.ComputeHash(System.Text.Encoding.UTF8.GetBytes(strSource));
38
39 //字节类型的数组转换为字符串
40 for (int i = 0; i < bytResult.Length; i++)
41 {
42 //16进制转换  
43 strResult = strResult + bytResult[i].ToString("X");
44 }
45 return strResult;
46 }
47
48 /**//// <summary>
49 /// 方法三:直接使用HashPasswordForStoringInConfigFile生成
50 /// </summary>
51 /// <param name="strSource">需要加密的明文</param>
52 /// <returns>返回32位加密结果</returns>
53 public string Get_MD5_Method3(string strSource)
54 {
55 return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(strSource, "MD5");
56 }
 这些加密函数都是在服务器端执行,也就是说,当用户输入密码后,从客户端到服务器端传输时,用户的密码没有任何保护,很危险。银行的做法是在客户端安装ActiveX控件,在客户端就把一些重要信息进行加密,再发送。这个偶就不会拉,很希望能学习学习做这种ActiveX控件。



分享到:
评论

相关推荐

    ASP.NET加密教程(MD5和SHA1加密几种方法)

    ASP.NET加密教程主要介绍了两种常见的哈希加密算法:MD5(Message-Digest Algorithm 5)和SHA1(Secure Hash Algorithm 1)。这两种算法都属于单向加密,即从原始数据生成固定长度的哈希值,但无法从哈希值还原出...

    ASP.NET中MD5与SHA1加密的几种方法

    ***技术中,MD5(Message-Digest Algorithm 5)与SHA1(Secure Hash Algorithm 1)是两种经常被用作数据完整性验证的加密算法。它们广泛应用于密码学和网络安全领域,尤其用于生成数据的哈希值。 首先,我们来了解...

    ASP.NET各种加密方式DEMO

    在ASP.NET中,`System.Security.Cryptography`命名空间是处理所有加密操作的核心,提供了丰富的类库和方法。此外,`System.Web.Security`命名空间中的`MachineKey`类可用于网站级别的加密和解密,确保不同服务器之间...

    asp.net微软提供的加密方法.rar

    1. **ASP.NET成员身份和角色管理**:ASP.NET内置了成员身份和角色管理功能,它们使用哈希算法(如SHA1或MD5)对用户的密码进行加密存储,确保即使数据库被泄露,原始密码也无法轻易恢复。 2. **机器密钥**:每个ASP...

    [其他类别]SHAI、MD5加密、解密、HTML字符串转换实例_strmanage_aspx1(ASP.NET源码).rar

    在ASP.NET中,MD5的使用与SHA1类似,通过System.Security.Cryptography命名空间下的MD5类进行操作。MD5同样适用于存储密码,但出于安全考虑,现在更倾向于使用更强大的加密算法,如SHA256或更高级别的算法。 HTML...

    入门级asp.net加密

    在ASP.NET中,我们通常会用到以下几种加密技术: 1. **哈希函数**:哈希函数是一种单向加密方式,它将任意长度的数据转换为固定长度的输出,常见的哈希函数有MD5和SHA系列。在ASP.NET中,`System.Security....

    ASP.NET-[其他类别]SHAI、MD5加密、解密、HTML字符串转换实例.zip

    在给定的压缩包文件中,我们关注的是几个关键的网络安全和数据处理概念:SHA(安全散列算法)加密、MD5(Message-Digest Algorithm 5)加密、解密以及HTML字符串转换。 首先,让我们深入了解SHA加密。SHA是一组由...

    ASP.NET网络数据库安全性浅析

    在ASP.NET中,MD5(Message-Digest Algorithm 5)是一种常用的哈希函数,用于将密码转化为不可逆的散列值。尽管MD5存在碰撞风险,但配合加盐(salt)技术,可以增加破解的难度。更安全的选择是使用更强大的哈希算法,...

    asp.net加解密和取拼音

    在这个主题中,“asp.net加解密和取拼音”涉及了两个重要的技术方面:数据加密和解密,以及汉字到拼音的转换。 **一、加解密** 在 ASP.NET 中,数据的安全性至关重要,尤其是在传输敏感信息时。加解密是保护这些...

    asp.net+access数据库小型网站

    3. 前端展示:在ASP.NET页面中,使用控件如GridView、FormView来显示和编辑数据。 六、用户注册与登录功能 用户注册涉及收集用户信息并存储到数据库。登录则需验证用户名和密码,通常会使用MD5或SHA等哈希算法进行...

    MD5加密与解密并做详解

    在ASP.NET中实现MD5加密和解密的过程主要包括以下几个步骤: 1. **MD5加密**: - 首先,你需要引用System.Security.Cryptography命名空间,该命名空间包含了MD5类。 - 创建一个MD5对象,如`MD5 md5 = MD5.Create...

    C#/asp.net银联支付实例

    C#提供了`System.Security.Cryptography`命名空间,其中包含多种加密算法,如MD5、SHA1和AES等。 4. **银联API集成**:银联提供了一系列的支付API,开发者需要按照银联提供的API文档来调用接口。这些接口可能包括...

    asp.net mvc 实现网络传输的签名验证

    总之,ASP.NET MVC中的网络传输签名验证是一种强大的安全机制,通过确保请求的完整性和来源可靠性,为WebAPI提供了一道防线。开发者需要理解其工作原理,并正确地在客户端和服务器端实现和应用签名验证。

    ASP.NET JSAPI微信支付完整源码,已经实际应用

    这个类库应包含了生成签名的算法,通常使用HMAC-SHA256或MD5等加密算法。 3. **微信支付回调处理**:支付成功后,微信服务器会向开发者指定的回调URL发送通知,源码中应包含处理这些回调的逻辑,例如更新订单状态、...

    ASP.NET很好的源程序

    示例中使用了SHA1算法,但也可以选择MD5。这种方法确保了用户密码的安全性,因为存储的是加密后的哈希值而非原始密码。 7. EMAIL 功能: 发送电子邮件可以通过`System.Web.Mail`命名空间的`MailMessage`和`SmtpMail...

    微信支付.net代码

    在这个名为“微信支付.net代码”的压缩包中,包含了实现微信支付功能的关键前后台代码,主要涉及MD5和SHA1两种加密算法,这是为了确保交易过程中的数据安全。 首先,我们要了解微信支付的基本流程。微信支付通常...

    ASP.NET源码——随机签名(刷新一下页面就变一次) .net源程序_.zip

    ASP.NET是一种基于.NET框架的服务器端编程模型,用于构建动态Web应用程序。在这个特定的源码示例中,我们关注的是“随机签名”功能,它在每次页面刷新时都会发生变化。这个特性通常用于防止跨站请求伪造(CSRF)攻击...

    详解.NET中的加密算法总结(自定义加密Helper类续)

    在.NET框架中,散列算法的使用可以通过一个通用的Encrypt方法来实现,该方法接受一个实现了HashAlgorithm抽象类的算法实例作为参数,例如MD5或SHA1。这样做的好处是,我们只需要维护一个通用的加密方法,而不用为每...

    总结了一些asp.net 经常需要用到的一些方法和类

    被封装在一起的类有以下几个: Compare------------------数据比较类(如比较时间大小) Cookie-------------------操作Cookie的类 DataBase-----------------数据操作的类 Encrypt------------------...

Global site tag (gtag.js) - Google Analytics