数据包完整性校验总结

简介: 为了保证分发的数据包的一致性,常常需要增加数据包校验码,这样可以减少因为传递过程中造成的数据包不能使用问题,比如jar包的__invalid distance code__问题。在开始讨论数据包校验码生成方法前,先了解一下基本概念。 # 核心技术 ## 哈希 哈希是一种不可逆的映射,可以将数据经过哈希算法计算得到一个哈希值,而无法再将该哈希值反映射得到原始的数据。一般来说,不同的数据得到的哈

为了保证分发的数据包的一致性,常常需要增加数据包校验码,这样可以减少因为传递过程中造成的数据包不能使用问题,比如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代表生成哈希码文件的后缀

参考

目录
相关文章
|
存储 算法 安全
PKCS#1、PKCS#5、PKCS#7、PKCS#8到底是什么?
PKCS#1、PKCS#5、PKCS#7、PKCS#8到底是什么?
2103 0
|
5月前
|
数据管理 开发者 Python
揭秘Python的__init__.py:从入门到精通的包管理艺术
__init__.py是Python包管理中的核心文件,既是包的身份标识,也是模块化设计的关键。本文从其历史演进、核心功能(如初始化、模块曝光控制和延迟加载)、高级应用场景(如兼容性适配、类型提示和插件架构)到最佳实践与常见陷阱,全面解析了__init__.py的作用与使用技巧。通过合理设计,开发者可构建优雅高效的包结构,助力Python代码质量提升。
433 10
|
消息中间件 Java 物联网
一文搞懂MQTT,如何在SpringBoot中使用MQTT实现消息的订阅和发布
之前介绍了RabbitMQ以及如何在SpringBoot项目中整合使用RabbitMQ,看过的朋友都说写的比较详细,希望再总结一下目前比较流行的MQTT。所以接下来,就来介绍什么MQTT?它在IoT中有着怎样的作用?如何在项目中使用MQTT?
18959 63
一文搞懂MQTT,如何在SpringBoot中使用MQTT实现消息的订阅和发布
|
12月前
|
存储
计算机中补码的意义
补码在计算机中用于表示有符号数,解决了符号位参与运算的问题,简化了硬件设计,同时能够表示更多的数值,提高了计算效率和精度。
789 13
|
存储 缓存 JSON
详解HTTP四种请求:POST、GET、DELETE、PUT
【4月更文挑战第3天】
66660 4
详解HTTP四种请求:POST、GET、DELETE、PUT
|
消息中间件 Java 测试技术
技术分享:探讨@Transactional与@Async的共舞——能否同时使用及最佳实践
【8月更文挑战第13天】在Java的Spring框架中,@Transactional和@Async是两个非常强大的注解,它们分别用于控制事务的边界和优化应用程序的性能通过异步执行。然而,当这两个注解碰撞在一起时,是否能够和谐共存,成为了很多开发者在设计和构建高性能、高可靠性的应用程序时面临的一个关键问题。本文将深入探讨@Transactional与@Async的联合使用场景、潜在问题以及最佳实践。
618 0
|
Kubernetes Cloud Native 应用服务中间件
对比 5 个开源网关项目,这家 SaaS 企业如何统一网关架构
对比 5 个开源网关项目,这家 SaaS 企业如何统一网关架构
45131 120
|
SQL 安全 测试技术
|
弹性计算 缓存 运维
Nginx 安装 SSL 配置 HTTPS 超详细完整教程全过程
说到 Nginx 服务器,最大特点就是轻量级和高性能。通过在几台不同的服务器上进行测试,发现它的并发能力特别强,并且相对而言吃的内存少很多。目前已是绝大多数站长的首选 HTTP 和反向代理服务器。
69921 2
|
Java Maven 数据安全/隐私保护
SpringBoot接口中如何直接返回图片数据
SpringBoot接口中如何直接返回图片数据