码迷,mamicode.com
首页 > 其他好文 > 详细

数据加密(MD5,DES,RSA)简析

时间:2016-05-31 13:41:20      阅读:215      评论:0      收藏:0      [点我收藏+]

标签:

由于涉及到功能是数据加密。所以,在经过小伙伴的查询和测试,我也查询了一些资料来总结一下常用的数据加密算法。

MD5

         MD5加密算法的全称是Message-Digest Algorithm 5,MD5将任意长度的“字符串”变换成一个128bit的大整数,并且它是一个不可逆的字符串变换算法,换句话说就是,即使你看到源程序和算法描述,也无法将一个MD5的值变换会原始的字符串。常用的是在网站注册的时候将密码加密后存储到数据库中,然后在登录的时候将加密的密码和数据库中的加密密码进行比对,如果正确则登录系统,在一定程度上保证了用户信息安全。
         具体是如何实现对字符串加密的,我们通过下面的例子来看一下:
 
技术分享
 1 static void Main(string[] args)  
 2         {  
 3             string source = "Hello World!";  
 4             using (MD5 md5Hash = MD5.Create())  
 5             {  
 6                 string hash = GetMd5Hash(md5Hash, source);         //对字符串进行加密  
 7   
 8                 Console.WriteLine("The MD5 hash of " + source + " is: " + hash + "."); //输出加密后的字符串  
 9   
10                 Console.WriteLine("Verifying the hash...");    //对加密后的字符串进行验证  
11   
12                 if (VerifyMd5Hash(md5Hash, source, hash))             //判断是否一致  
13                 {  
14                     Console.WriteLine("The hashes are the same.");  
15                     Console.ReadKey();  
16                 }  
17                 else  
18                 {  
19                     Console.WriteLine("The hashes are not same.");  
20                     Console.ReadKey();  
21                 }  
22             }  
23         }  
24  
25         #region "MD5加密"  
26         static string GetMd5Hash(MD5 md5Hash, string input)  
27         {   
28   
29             // 将输入字符串转换为字节数组,然后计算哈希值。  
30             byte[] data = md5Hash.ComputeHash(Encoding.UTF8.GetBytes(input));  
31   
32             // 创建新的数据收集字节  
33             // 创建一个字符串。  
34             StringBuilder sBuilder = new StringBuilder();  
35   
36             // 通过散列数据的每个字节的环  
37             // 和每一个的一个十六进制字符串格式。  
38             for (int i = 0; i < data.Length; i++)  
39             {  
40                 sBuilder.Append(data[i].ToString("x2"));  
41             }  
42   
43             // 返回十六进制字符串。  
44             return sBuilder.ToString();  
45         }  
46         #endregion  
47  
48  
49  
50  
51         #region "验证加密的字符是否一致"  
52         // 验证一个字符串的哈希值。  
53         static bool VerifyMd5Hash(MD5 md5Hash, string input, string hash)  
54         {  
55             //散列输入。  
56             string hashOfInput = GetMd5Hash(md5Hash, input);  
57   
58             // 创建一个比较哈希StringComparer。  
59             StringComparer comparer = StringComparer.OrdinalIgnoreCase;  
60   
61             if (0 == comparer.Compare(hashOfInput, hash))   //进行比较,类似于登陆时比对数据库中的密码  
62             {  
63                 return true;  
64             }  
65             else  
66             {  
67                 return false;  
68             }  
69         }  
70         #endregion  
技术分享

 

最后的输出结果为:
 

DES

         DES全称为Data Encryption Standard,即为数据加密标准,是一种使用密钥加密的块算法,具体的加密原理我们不用深入的了解,会用就行了。拿来主义嘛!DES算法的入口参数有三个:Key、Data、Mode。其中Key为7个字节共56位,是DES算法的工作秘钥;Data为8个字节64位,是要被加密或被解密的数据;Mode为DES的工作方式,有两种:加密或解密。
             具体的使用方法请看下面的例子(vb.net)。
 

RSA

            RSA算法是第一个技能用户数据加密也能用于数字签名的算法。它易于理解和操作,也很流行。但是RSA的安全性一直未能得到理论上的证明。它经历了各种攻击,至今未被完全攻破。由于是进行的是大数计算,使得RSA最快的情况也比DES慢上数倍,无论是软件还是硬件实现。速度一直是RSA的缺陷。一般来说只用于少量数据加密。
 
总结:数据加密是以后我们必修的一项技能,数据安全越来越重要。我们要重视起来。

数据加密(MD5,DES,RSA)简析

标签:

原文地址:http://www.cnblogs.com/tgb520-why/p/5545409.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!