一、概述
MAC算法结合了MD5和SHA算法的优势,并加入密钥的支持,是一种更为安全的消息摘要算法。
MAC(Message Authentication Code,消息认证码算法)是含有密钥的散列函数算法,兼容了MD和SHA算法的特性,并在此基础上加入了密钥。日次,我们也常把MAC称为HMAC(keyed-Hash Message Authentication Code)。
MAC算法主要集合了MD和SHA两大系列消息摘要算法。MD系列的算法有HmacMD2、HmacMD4、HmacMD5三种算法;SHA系列的算法有HmacSHA1、HmacSHA224、HmacSHA256、HmacSHA384.HmacSHA512五种算法。
经过MAC算法得到的摘要值也可以使用十六进制编码表示,其摘要值长度与参与实现的摘要值长度相同。例如,HmacSHA1算法得到的摘要长度就是SHA1算法得到的摘要长度,都是160位二进制码,换算成十六进制编码为40位。
二、实现和应用
1、Sun的实现和应用
在java6中,MAC系列算法需要通过Mac类提供支持。java6中仅仅提供HmacMD5、HmacSHA1、HmacSHA256、HmacSHA384和HmacSHA512四种算法。
Mac算法是带有密钥的消息摘要算法,所以实现起来要分为两步:
1)、构建密钥
2)、执行消息摘要
2、BouncyCastle的实现和应用
第三方加密组件包Bouncy Castle作为补充,提供了HmacMD2.HmacMD4、HmacSHA224三种算法的支持。
第一类:属性值为true或false
android:layout_centerHrizontal 水平居中
android:layout_centerVertical 垂直居中
android:layout_centerInparent 相对于父元素完全居中
android:layout_alignParentBottom 贴紧父元素的下边缘
android:layout_alignParentLeft 贴紧父元素的左边缘
android:layout_alignParentRight 贴紧父元素的右边缘
android:layout_alignParentTop 贴紧父元素的上边缘
android:layout_alignWithParentIfMissing 如果对应的兄弟元素找不到的话就以父元素做参照物
第二类:属性值必须为id的引用名“@id/id-name”
android:layout_below 在某元素的下方
android:layout_above 在某元素的的上方
android:layout_toLeftOf 在某元素的左边
android:layout_toRightOf 在某元素的右边
android:layout_alignTop 本元素的上边缘和某元素的的上边缘对齐
android:layout_alignLeft 本元素的左边缘和某元素的的左边缘对齐
android:layout_alignBottom 本元素的下边缘和某元素的的下边缘对齐
android:layout_alignRight 本元素的右边缘和某元素的的右边缘对齐
第三类:属性值为具体的像素值,如30dip,40px
android:layout_marginBottom 离某元素底边缘的距离
android:layout_marginLeft 离某元素左边缘的距离
android:layout_marginRight 离某元素右边缘的距离
android:layout_marginTop 离某元素上边缘的距离
android:layout_centerVertical 垂直居中布局
android:layout_centerHorizontal 水平居中布局
android:layout_alignParentBottom 居于容器内底部
android:layout_alignParentLeft 居于容器内左边
android:layout_alignParentRight 居于容器内右边
android:layout_above 居于指定View的上方
android:layout_below 居于指定View的下方
android:layout_toRightOf 在指定View的右边
android:layout_toLeftOf 在指定View的左边
android:layout_alignTop 与指定View的Top一致
除了MD、SHA、MAC这三大主流消息摘要算法外,还有许多我们不了解的消息摘要算法,包括RipeMD系列,Tiger,Whirlpool和GOST3411算法、
一、概述
RipeMD:
RipeMD(RACE Integrity Primitives Evaluation Message Digest),是由Hans Dobbertin等3人在对MD4,MD5缺陷分析的基础上,于1996年提出的。目前,RipeMD算法共有4个标准,主要是对摘要值长度的区分,类似于SHA系列算法,包含RipeMD128,RipeMD160、RipeMD256和RipeMD320共四种算法。HmacRipeMD128和HmacRipeMd160算法是RipeMD与MAC算法融合的产物
Tiger:
Tiger由Ross于1995年提出。Tiger号称是最快的Hash算法,专门为64位机器做了优化,其消息摘要长度为192位。
Whirlpool:
Whirlpool已被列入ISO标准,由于它使用了与AES加密标准相同的转化技术,极大的提高了安全性,被称为最安全的摘要算法。Whirlpool在历史上共有3个版本,目前最新的版本是2003年颁布的,通常将其称为Whirlpool3.0,其消息摘要长度为512位。
GOST3411:
GOST3411消息摘要长度为256位。
二、实现和应用
java6没有提供上述算法的实现,所以,这里主要介绍BouncyCastle的实现和应用
1、RipeMD系列算法
2、HmacRipeMD算法