漫谈算法——哈希算法应用

113 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第27天,点击查看活动详情

前言

在业务系统中,我们都会有用户账号体系,那么存储密码是一个非常重要的环节,通常情况下,服务的提供方是不会存储用户的的密码数据的,这些都是对外宣称的,但是是否会在特殊的地方记录密码。就不得而知了。一般情况下,我们都是将密码进行MD5加密后存储到数据库表中的。我们所使用的MD5就是一种哈希算法。

哈希算法的应用

哈希算法就是我们在学习散列表时,所使用的散列函数也就是哈希算法,哈希算法就是将任意长度的二进制字符串映射成为固定长度的二进制值串,这个映射规则就是哈希算法,通过哈希算法映射的字符串是无法通过哈希值反推回来的。或者说是反推的时间在现有的计算资源下是需要花费巨大的时间的。这就是指数爆炸的魅力所在。

安全加密

哈希算法应用在安全加密方法的有MD5(MD5 Message-Digest Algorithm,MD5 消息摘要算法)和SHA(Secure Hash Algorithm,安全散列算法)。除了这两个之外,当然还有比如DES(Data Encryption Standard,数据加密标准)、AES(Advanced Encryption Standard,高级加密标准)。这些算法都是主流的加密算法,散列冲突的概率非常小。

唯一标识

现如今数据量越来越大,对于一类的数据,我们需要去划分数据个体的话,就需要使用到数据的唯一标识的。比如在海量图库中,我们需要如何计算出一张图片是否是同一张,肯定是不能根据图片的名称来判断的。我们可以从图片的二进制码串开头取 100 个字节,从中间取 100 个字节,从最后再取 100 个字节,然后将这 300 个字节放到一块,通过哈希算法(比如 MD5),得到一个哈希字符串,用它作为图片的唯一标识。这样我们就可以迅速的判断图片是否相同了。

总结

哈希算法在业界已经十分成熟了,我们只需要拿对应的类库使用即可。