
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
随着互联网的不断发展,越来越多的人都在学习Java编程开发技术来实现职业转型发展,而本文我们就通过案例分析来简单了解一下,哈希算法应用与案例分析。
对于哈希表,使用它主要是为了提升时间复杂度;对于哈希算法,使用它是为了应用它的特点。
安全加密
常见的加密算法使用的都是哈希算法,如MD5、SHA等。因为哈希算法不可逆和转换敏感的特点,使用哈希算法的安全性非常好。
单一标识
比如URL字段或者图片字段要求不能重复,这个时候就可以通过对相应字段值做MD5处理,将数据统一为32位长度,对数据库索引构建和查询提升非常明显。
此外,还可以对文件之类的二进制数据做MD5处理,作为标识,这样判定重复文件的时候更快捷。
数据校验
比如从网上下载的很多文件(尤其是P2P站点资源),都会包含一个MD5值,用于校验下载数据的完整性,避免数据在中途被劫持篡改。
负载均衡
利用哈希表代替映射表,可以实现一个会话粘滞的负载均衡策略。
对客户端IP地址或者会话ID计算哈希值,将取得的哈希值与服务器列表的大小进行取模运算,终得到的值就应该是被路由到的服务器编号。
数据分片
通过哈希表对处理的海量数据进行分片,多机分布式处理,可以突破单机资源的限制。
案例
MD5
MD5消息摘要算法是一种被广泛使用的散列函数,可以产生出一个128位(16字节)的散列值,用于确保信息传输完整一致。
MD5是输入不定长度信息,输出固定长度128位的算法。无论是多长的信息,经过程序流程,都会生成四个32位数据,后联合起来成为一个128位散列值。
但是在2009年,中国科学院的谢涛和冯登国仅用了220.96的碰撞算法复杂度,破解了MD5的碰撞抵抗,该攻击在普通计算机上运行只需要数秒钟。2011年,RFC6151禁止将MD5用作密钥散列消息认证码。
SHA
安全散列算法SHA是一个密码散列函数家族,是FIPS所认证的安全散列算法。这是能计算出一个数字消息所对应到的、长度固定的字符串(又称消息摘要)的算法。且若输入的消息不同,它们对应到不同字符串的几率很高。
SHA家族算法包含了SHA-0、SHA-1、SHA-2、SHA-3,对SHA-0和SHA-1都已经出现理论上破解的方法,现在比较常见的还是SHA-2,虽然至今尚未出现对SHA-2有效的攻击,但它的算法跟SHA-1基本上相似。
SHA-3是在2015年正式发布的,由于对MD5出现成功的破解,NIST感觉需要一个与之前算法不同的、可替换的加密散列算法,也就是现在的SHA-3。
CRC
循环冗余校验CRC是一种根据网络数据包或计算机文件等数据产生简短固定位数校验码的一种信道编码技术,主要用来检测或校验数据传输或者保存后可能出现的错误。它是利用除法及余数的原理来作错误侦测的。
由于CRC算法检验的检错能力极强,且检测成本较低,因此在对于编码器和电路的检测中使用较为广泛。从检错的正确率与速度、成本等方面,都比奇偶校验等校验方式具有优势。因而CRC成为计算机信息通信领域为普遍的校验方式。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。