一、首先我们来看一下常用的几种密码攻击方式:
- 暴力破解:按照一定的顺序一个一个的去试
- 字典攻击:把常用的密码做成字典,破解时先看字典里是否存在,有效加快破解速度。
- 查表法:使用一个大型字典,把每个p和对应的q都记录下来,按q做一下索引,直接查找匹配。
- 彩虹表 :对于HASH的传统做法是把H(X)的所有输出穷举,查找H(X[y])H§,得出PX[y]。而彩虹表则是使用散列链的方式进行。
二、简单的介绍第一种密码加密方式---MD5加密
- MD5的全称是Message-Digest algorithm 5(信息-摘要算法)
- 在90年代初由mit laboratory for computer science和rsa data security inc的ronald l. rivest开发出来, 经md2、md3和md4发展而来。
- MD5具有很好的安全性(它具有不可逆的特征,加过密的密文经过解密后和加密前的相同的可能性极小)
MD5加密方法使用:
///MD5加密 public static string Md5Encoding(string passText)
{
MD5 md5 = new MD5CryptoServiceProvider();
byte[] fromData = System.Text.Encoding.UTF8.GetBytes(passText);
byte[] targetData = md5.ComputeHash(fromData);
//加密后的字符串 string byteStr = "";
for (int i = 0; i < targetData.Length; i++)
{
byteStr += targetData[i].ToString("x2");
}
return byteStr;
}
在你使用的地方应用MD5加密的方法:Md5Encoding(里面是你存的密码文本)。
三、简单的介绍第二种密码加密方式---Hash(哈希)加密
- HASH就是把一系列不定长2进制输出为一个定长的2进制。
- HASH值是不可逆的,不存在破解不破解的问题。
- 一般是用来验证一段信息有没被篡改过或者就是保存密码的HASH值用于日后验证又防止别人查看这个记录窃取密码。
Hash加密方法使用:
public static string HashEncoding(string passText)
{
byte[] Value;
UnicodeEncoding Code = new UnicodeEncoding();
byte[] Message = Code.GetBytes(passText);
SHA512Managed Arithmetic = new SHA512Managed();
Value = Arithmetic.ComputeHash(passText);
passText= "";
foreach (byte o in Value)
{
passText+= (int)o + "O";
}
return passText;
}