数据加密(MD5,DES,RSA)简析
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据加密(MD5,DES,RSA)简析相关的知识,希望对你有一定的参考价值。
由于涉及到功能是数据加密。所以,在经过小伙伴的查询和测试,我也查询了一些资料来总结一下常用的数据加密算法。
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)简析的主要内容,如果未能解决你的问题,请参考以下文章