信息摘要技术 - 其他信息摘要算法

本文介绍了多种信息摘要算法,包括RipeMD系列、Tiger、Whirlpool等,并对比了它们的特点及应用场合。还讨论了CRC算法及其变种,并提供了CRC-32算法在Java中的实现示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

信息摘要算法很多,主要的MD、MAC、SHA算法很常用,但是还有一些其他信息摘要算法,这些摘要算法JDK都没有提供。

RipeMD

1996年提出,在分析MD4、MD5的缺陷基础上做的改进算法,有4个标准和2个融合产物,区别是产生的摘要长度区别。

  • RipeMD128,产生128位摘要信息;
  • RipeMD160,产生160位摘要信息;
  • RipeMD256,产生256位摘要信息;
  • RipeMD320,产生320位摘要信息;
  • HmacRipeMD128,与MAC算法融合产物,产生128位摘要信息;
  • HmacRipeMD160,与MAC算法融合产物,产生160位摘要信息;

Tiger

1995年提出,号称是最快的Hash算法,专门为64为机器做了优化,信息摘要长度为192位。

Whirlpool

目前已被ISO标准采纳,是最安全的信息摘要算法。历史上有三个版本,最新的是2003年版本,产生的摘要长度在512位。

CRC算法

CRC算法并不是属于加密算法范畴,和“奇偶校验码”、“循环冗余校验码”是一套内容,CRC是循环冗余校验码,是一个产生简短固定位数的散列函数。CRC算法是信息摘要算法的前身,为信息摘要算法奠定了基础

主要用途:校验数据输出/保存后的错误内容。

一般用法:在计算后附件到原数据中,使用数据前,对数据的完整性做校验。

常见场景:WinRAR这类数据压缩软件,防止数据压缩文件错误。

CRC算法也分为很多类:

  • CRC-1:主要用于硬件,也就是常说的奇偶校验码;
  • CRC-32:主要在通信领域实现差错控制,IEEE 802.3只是CRC-32中的一种实现;
  • CRC-32-Adler:CRC-32的变种,速度比CRC-32块,常用在zlib压缩算法中;
  • CRC-128:演变为MD算法。
  • CRC-160:演变为SHA算法。

Java算法实现

Java没有实现以上算法(除CRC-32和Adler-32算法外),可以使用Bouncy Castle的算法实现。下面是CRC-32算法的使用示例:

public class CRCTest{

    public static void main(String[] args) throws Exception{
        String input = "test";
        CRC32 crc32 = new CRC32();
        crc32.update(input.getBytes());
        String hex = Long.toHexString(crc32.getValue());
        System.out.println(hex);
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值