安全性一直是开发中,重中之重的问题。不过平时用的不算特别多,基本上用个MD5,SSL也就到这了。再次记录一下,以避免忘记。git
MD5算法是不可逆算法。应用于密码验证,完整性验证这种特征。这里为了不穷举法(暴力破解),能够进行双重加密。算法
static void Main(string[] args) { string strText = "Chenxy"; Console.WriteLine(strText); Console.WriteLine(GetMd5Hash(strText)); Console.WriteLine(GetMd5HashStrong(strText)); Console.Read(); } /// <summary> /// MD5加密 /// </summary> static string GetMd5Hash(string input) { using (MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider()) { return BitConverter.ToString(md5.ComputeHash(UTF8Encoding.Default.GetBytes(input))).Replace("-", ""); } } /// <summary> /// MD5加密强力.文字加密+哈希秘钥加密.在进行md5加密 /// </summary> static string GetMd5HashStrong(string input) { string hashKey = "Chsndhas%4362** >.fdsa"; using (MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider()) { string hashCode = BitConverter.ToString(md5.ComputeHash(UTF8Encoding.Default.GetBytes(input))).Replace("-", "") + BitConverter.ToString(md5.ComputeHash(UTF8Encoding.Default.GetBytes(hashKey))).Replace("-", ""); return BitConverter.ToString(md5.ComputeHash(UTF8Encoding.Default.GetBytes(hashCode))).Replace("-", ""); } }
static void Main(string[] args) { string strFileHash = GetFileHash(@"C:\test.txt"); Console.WriteLine(strFileHash); Console.Read(); } static string GetFileHash(string filePath) { using (MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider()) using (Stream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read)) { return BitConverter.ToString(md5.ComputeHash(fs)).Replace("-", ""); } }
对称加密算法:首先须要发送方和接收方协定一个密钥Key.密钥必须是加密和解密之间可以推算出来的。最简单的就是同一个密钥。在公开通道中传输,即便第三方获取了数据,因为没有密钥,也是解密不了的。安全
非对称加密算法:首先应有一个密钥对,包含两部份内容。公钥(PK),私钥(SK)公钥一般用来加密,私钥用来解密。非对称加密中,公钥和私钥不能推算,更不能用同一个。服务器
对称加密和非对称加密,各有优缺点。非对称加密突出优势是用于解密的密钥,永远不须要传递给对方。缺点是非对称加密复杂,致使解密速度慢。适合数据量小的场合。网络
在加密中,有两个关键字是必须知道的:ide
密钥salt:在加密算法中主要是用来防止字段攻击。salt是在密钥导出以前在密钥末尾引入的随机字节,它使这类攻击变得很是困难。加密
向量iv:在加密算法中也是起到加强破解难度的,在加密过程当中,每每会同时使用密码和上一个数据块的加密结果。由于要加密的第一个数据块显然不存在上一个数据块,因此这个初始化向量就是被设计用来当作初始数据块的加密结果。spa
SSL是用于Web安全的网络协议。目前它已被普遍应用到各种网络传输通讯中。SSL利用数字证书技术(非对称加密),保证了通讯过程当中的惟一性、不可篡改性、不可依赖性。.net
在传统的网络传输中,咱们将通讯的双方定义为:服务器端和客户端。假定服务器端是数字证书建立者,它保存好本身的私钥,同时公布了本身的公钥给全部的客户端。知足这个条件,来构建SSL通道。设计
首先,客户端随机生成一个字符串做为密钥K,而后用公钥进行加密。并将加密后的密钥发给服务器端。
服务器端用私钥解密信息,获取了客户端的K,并确认了客户端的身份。SSL通道创建。
服务器端和客户端就能够进行安全通讯了。过程是:发送方使用密钥K对要传输的信息进行对称加密,接收方则使用K进行解密。
模拟DEMO:https://coding.net/u/chenxygx/p/CodeSave/git/tree/master/SSLDemo
如须要对应用程序中的某个功能,进行登陆用户限制。
能够在方法上,添加。PrincipalPermission(SecurityAction.Demand, Role = @"Users")]