Adler-32校验算法

在研究ZooKeeper的时候,看到用到Adler-32算法来进行校验,由于之前从未用过,甚至没有听说过,所以就查了一下这个算法.

我看的是Wikipedia上的解释,所以这篇文章可以算是对Wikipedia上相关条目的总结.

为什么需要Adler-32算法

关于校验码算法,我们最熟悉的算法应该是CRC校验算法,那么有了CRC校验算法之后,为什么还要提出这样一个算法呢?

这个算法比CRC算法更加快速,但是安全性不如CRC.换句话说,就是在安全性和速度之间做了一个权衡.

算法描述

假设我们要得到D的Adler-32校验码,n是D的长度(以字节为单位).那我们可以用以下公式来取得:

其中

要mod 65521.

好,公式就是这样.

我们来看一个具体的例子,这个例子同样是Wikipedia中的:

总结

算法很简单,对吧?

但是这个算法是正确的吗?我不知道,我并没有看到关于这个算法的论文,并没有去验证它的正确性.只能假设它是正确的,毕竟在JDK中已经实现了.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容