雲計算

数据包完整性校验总结

为了保证分发的数据包的一致性,常常需要增加数据包校验码,这样可以减少因为传递过程中造成的数据包不能使用问题,比如jar包的__invalid distance code__问题。在开始讨论数据包校验码生成方法前,先了解一下基本概念。

核心技术

哈希

哈希是一种不可逆的映射,可以将数据经过哈希算法计算得到一个哈希值,而无法再将该哈希值反映射得到原始的数据。一般来说,不同的数据得到的哈希值是不同的,但也有极少的可能会出现碰撞,这极小的概率在这里不予考虑
在网络数据完整性校验中使用的哈希算法通常包括:MD5, SHA。

数据完整性校验

数据完整性校验一般使用哈希算法对数据进行哈希得到数据包的一个哈希值,发布到网上。用户下载数据包后,需要再次对结果的数据包计算哈希值,如果计算的结果与网上公布的一致,即代表数据包完整。

生成哈希值方法

shell命令

  • MacOS
md5 source_file.tar
shasum source_file.tar
  • CentOS / Ubuntu
md5sum source_file.tar
sha1sum source_file.tar

maven打包

执行install命令时可以选择自动生成md5与sha1文件(在本地maven库里,例如~/.m2/repository)

mvn install -DcreateChecksum=true

或在pom文件中增加插件

<plugin>
  <artifactId>maven-install-plugin</artifactId>
  <version>2.3.1</version>
  <configuration>
    <createChecksum>true</createChecksum>
  </configuration>
</plugin>

ant打包

采用Checksum工具生成md5与sha1码,需要在build.xml中增加task:

<checksum file="source_file.tar" algorithm="SHA-1" fileext=".sha1" forceOverwrite="yes"/>
<checksum file="source_file.tar" algorithm="MD5" fileext=".md5" forceOverwrite="yes"/>

其中fileext代表生成哈希码文件的后缀

参考

Leave a Reply

Your email address will not be published. Required fields are marked *