不止一次有人问我hash与MD5的区别以及如何选择使用,今天有人问我了,其实这方面我懂的也不太多,基础的还是了解一些的,把我知道的记一下吧。
MD5和Hash的区别
首先,MD5与hash都是单向加密的算法,可以把一些信息进行单向加密成固定长度的散列码。(hash算法即常说的散列算法,也被人翻译成哈希)
其次,MD5也是hash算法的一种,常见的hash算法还有sha1,sha2等
MD5也被称为信息摘要算法,由于其算法复杂不够,容易被暴力破解的。
SHA1算法也存在和MD5一样的问题。
还有SHA2、SHA256、SHA512等,这些算法的复杂度相对要高,但是依然是可被破解的只是破解成本被增加了,但是一些常用的文本信息(比如密码)的散列码被一些专业厂端记录下来了,还是容易被破解的,怎么办呢? 加个密码盐呗,这样的话暴力破解几乎是搞不定了,即使搞定了可能也因为过去太久时间而变的没有价值
常用的密码攻击方式
常用的密码攻击方式有字典攻击、暴力破解、查表法、反向查表法、彩虹表等。
暴力破解:按照一定的顺序一个一个的去试;
字典攻击:把常用的密码做成字典,破解时先看字典里是否存在,有效加快破解速度
查表法:使用一个大型字典,把每个p和对应的q都记录下来,按q做一下索引,直接查找匹配。
彩虹表:对于Hash的传统做法是把H(X)的所有输出穷举,查找H(X[y])H§,得出PX[y]。而彩虹表则是使用散列链的方式进行。