信息摘要技术及算法介绍

37 篇文章 0 订阅
13 篇文章 0 订阅

数据摘要算法是密码学算法中非常重要的一个分支,它通过对所有数据提取指纹信息以实现数据签名、数据完整性校验等功能,由于其不可逆性,有时候会被用做敏感信息的加密。

数据摘要算法也被称为哈希(Hash)算法、散列算法;

特点

消息摘要算法(杂凑算法,哈希算法)的主要特征是加密过程不需要密钥,并且经过加密的数据无法被解密,只有输入相同的明文数据经过相同的消息摘要算法才能得到相同的密文。

  • 1.无论输入的消息有多长,计算出来的消息摘要的长度总是固定的;
  • 2.消息摘要看起来是“随机的”,一般随机都是伪随机;
  • 3.一般地,只要输入的消息不同,对其进行摘要以后产生的摘要消息也必不相同(潜在意思是可以相同);但相同的输入必会产生相同的输出;
  • 4.消息摘要函数是无陷门的单向函数,即只能进行正向的信息摘要,而无法从摘要中恢复出任何的消息,甚至根本就找不到任何与原信息相关的信息;
  • 5.好的摘要算法,没有人能从中找到“碰撞”,但是“碰撞”是肯定存在的。

应用

一般地,把对一个信息的摘要称为该消息的指纹或数字签名,信息摘要算法的主要用途是信息完整性校验,就好比我们买菜,肯定都希望称一下买的菜分量是否足够。

在计算机领域,我们也希望能知道别人传递的消息是否完整是否被篡改了,这里就用到信息摘要算法。

信息摘要算法常常被用来保证信息的完整性,防止信息在传输过程中被篡改(无法确定信息是否被监听),也就常说的验签。

举例:我们传递password时,需要将password加salt后做信息摘要,接收方核对摘要,相同则接受处理,不相同则认为本次的password传输过程中被篡改,拒绝本次请求。

#算法家族:
信息摘要算法来源于CRC算法,最初CRC算法是用来验证数据完整性的,即我们常见的奇偶校验码循环冗余校验,在CRC基础上发展处了MD和SHA量大算法家族,CRC比这些算法都要早,MD算法比SHA算法早,SHA算法是对MD算法的改进。再后来则发展出了可以带有密码的信息摘要算法-MAC算法。

信息摘要算法包括三大类,MD、SHA和MAC算法,MD的分类是按照版本规定的,SHA则是按照适用的消息长度分类的:

  • MD算法: Message Digest Algorithm ,目前主流的是MD5算法,为第五版算法,之前有MD2、MD3、MD4算法。
  • SHA算法:安全哈希算法(Secure Hash Algorithm)主要适用于数字签名标准(Digital Signature Standard DSS)里面定义的数字签名算法(Digital Signature Algorithm DSA);
  • MAC算法:带有密码信息的信息摘要算法,是对MD和SHA算法的演变和改进,包括HmacMD2、HmacMD4、HmacMD5、HmacSHA-256等。

下表是主要的信息摘要算法的特点比较,关于MD5、SHA1等算法的具体过程,非安全、算法专业人士可不学习,如有需要可以参考下面的blog:

http://blog.csdn.net/lonelyroamer/article/details/7652320

算法供应商

美国对于算法出口有着严格的限制,Sun公司限于美国算法出口法律的限制和本身的一些原因,并有提供特别全面的算法支持,不过Sun提供SPI方式用来可以透明的接入其他算法供应商,也可以直接使用其他算法供应商的jar包工具。

在Java中主要的算法供应商有三类:Sun本身的算法,包含在JDK中,大部分在JDK 1.6之后,Bouncy Castle和Commons Codec。

  • Sun算法:sun的算法也使用Java SPI机制提供,通过Securty.addProvider()可以注册算法实现;
  • Bouncy Castle:开源加密组件,提供了很多JDK 6不支持的算法。
  • Commons Codec:也是开源组件,是Apache的项目,Apache的Commons项目应该广泛,简单易用,目标是提高Java Api的易用性。

算法选择

  • CRC算法不属于加密场景,比较古老,但是在数据压缩领域被广泛使用作为完整性校验;
  • MD算法中MD5算法最流行,也是目前最流行的信息摘要算法,是大部分系统的首先,虽然MD算法破解门槛越来越低,但是一般应用足够了;
  • SHA算法枝繁叶茂,比MD算法安全性高,尝尝用在一些安全性系数要求较高的环境,目前也逐渐替代MD5算法,用在注册、登录模块,在数字证书的签名算法中,SHA算法更广泛。
  • MAC算法是带有密钥信息的信息摘要算法,吸收了MD和SHA的精髓,安全程度更高。
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值