当前位置: 首页 > news >正文

使用Java计算Linux系统中sum命令得到的校验值

目录

■相关知识

・sum 命令

・BSD校验算法是什么

・BSD校验算法 和hash值 有区别吗

・BSD校验算法,为什么是BSD,这个缩写代表什么

■Java代码

■效果


======

■相关知识

・sum 命令

・BSD校验算法是什么

BSD校验算法(BSD checksum algorithm)是一种简单的校验算法,通常用于计算数据的校验和。它的计算方法是将数据分成多个16位的块,然后对每个块进行累加求和,最后对结果取反得到校验和。在网络通信或数据传输中,BSD校验算法常用于检测数据传输过程中的错误或完整性。

具体来说,BSD校验算法的步骤如下:

  1. 将数据分成16位的块(一个字),若数据长度为奇数则最后一个字节作为单独的8位块处理。
  2. 将每个16位块的值与上一个块的值相加,结果存储在一个累加器中。
  3. 如果累加器溢出(即超过16位),则将溢出的部分加回到累加器中。
  4. 对最终的累加器值取反作为校验和。

通过比较发送数据的校验和和接收数据的校验和,可以检测数据在传输过程中是否发生了错误或丢失。BSD校验算法虽然简单,但在某些应用场景下仍然有效且高效。

・BSD校验算法 和hash值 有区别吗

是的,BSD校验算法和哈希值有一些重要的区别。

  1. 目的不同:BSD校验算法用于检测数据传输过程中的错误或完整性,而哈希值通常用于验证数据的一致性和唯一性。

  2. 处理方式不同:BSD校验算法是通过对数据的累加求和,然后取反得到校验和,而哈希值是通过一种特定的哈希函数对数据进行转换,生成固定长度的摘要。

  3. 冲突的处理:哈希值具有较低的冲突概率,通常用于验证唯一性和一致性;而BSD校验算法并不会关心是否有冲突,只是用来检测数据传输过程中是否有错误。

  4. 安全性区别:哈希值通常用于密码学、数字签名等安全领域,因此哈希函数通常需要满足更严格的安全性要求;而BSD校验算法主要用于基本的数据完整性检测,不具备哈希函数在安全性方面的特性。

总的来说,BSD校验算法和哈希值在用途、处理方式、安全性等方面都有较大的区别,因此在选择使用时需要根据具体的情况进行考虑。

・BSD校验算法,为什么是BSD,这个缩写代表什么

BSD校验算法中的BSD缩写代表的是"Berkeley Software Distribution",是指由加州大学伯克利分校(UC Berkeley)开发和发布的操作系统和软件套件的系列版本。BSD校验算法最初是在BSD操作系统中引入并广泛使用的,因此得名为BSD校验算法。在计算机科学领域中,BSD也常用来指代与伯克利相关的各种技术和项目。

■Java代码

sum 工具和 BSD 校验和有所不同。对于 BSD 校验和,可以使用以下的代码来计算:

具体来说,BSD校验算法的步骤如下:

  1. 将数据分成16位的块(一个字),若数据长度为奇数则最后一个字节作为单独的8位块处理。
  2. 将每个16位块的值与上一个块的值相加,结果存储在一个累加器中。
  3. 如果累加器溢出(即超过16位),则将溢出的部分加回到累加器中。
  4. 对最终的累加器值取反作为校验和。
package com.sxz.study.sum;import java.io.FileInputStream;
import java.io.IOException;public class BSDSumExample {private static int block = 0;public static void main(String[] args) {String filePath = "C:\\Users\\sxz\\Music\\失恋阵线联盟.ogg";// 62827try {byte[] data = readFile(filePath);long checksum = BSDChecksum(data);System.out.println("BSD checksum: " + checksum + "-----------" + block);} catch (IOException e) {e.printStackTrace();}}private static byte[] readFile(String filePath) throws IOException {FileInputStream fis = null;byte[] data = null;try {fis = new FileInputStream(filePath);int size = fis.available();data = new byte[size];fis.read(data);double result = Math.ceil((double) size / 1024);block = (int)result;} finally {if (fis != null) {fis.close();}}return data;}private static long BSDChecksum(byte[] data) {long checksum = 0;for (int i = 0; i < data.length; i++) {// 更新校验和,使用BSD校验和算法中的一次更新操作//       checksum >> 1:将checksum无符号右移一位,相当于将其除以2并丢弃余数。//       ((checksum & 1) << 15) :得到了checksum最低位的值,并将其左移15位。//              checksum & 1 是一个按位与操作。它是用来检查checksum的最低位(最右边的位)是0还是1。//              如果最低位为1,则结果为1;如果最低位为0,则结果为0。checksum = (checksum >> 1) + ((checksum & 1) << 15);// 将当前字节数据加入到校验和中//       & 0xFF 作用 //       在Java中,byte类型是有符号的,其取值范围为-128到+127。//       而在进行校验和计算的过程中,需要将每个byte类型的数据当做无符号数进行处理,即0到255。checksum += (data[i] & 0xFF);// 将校验和限制在一个16位无符号整数范围内checksum &= 0xFFFF;}return checksum;}
}

==

示例代码使用了修正后的 BSDChecksum() 方法来计算 BSD 校验和。

===

■效果

---

===

相关文章:

使用Java计算Linux系统中sum命令得到的校验值

目录 ■相关知识 ・sum 命令 ・BSD校验算法是什么 ・BSD校验算法 和hash值 有区别吗 ・BSD校验算法&#xff0c;为什么是BSD&#xff0c;这个缩写代表什么 ■Java代码 ■效果 &#xff1d;&#xff1d;&#xff1d;&#xff1d;&#xff1d;&#xff1d; ■相关知识 ・…...

鸿蒙开发电话服务:【 @ohos.telephony.sms (短信服务)】

短信服务 说明&#xff1a; 本模块首批接口从API version 6开始支持。后续版本的新增接口&#xff0c;采用上角标单独标记接口的起始版本。 导入模块 import sms from ohos.telephony.sms;sms.createMessage createMessage(pdu: Array, specification: string, callback: Asy…...

算法02 递归算法及其相关问题【C++实现】

递归 在编程中&#xff0c;我们把函数直接或者间接调用自身的过程叫做递归。 递归处理问题的过程是&#xff1a;通常把一个大型的复杂问题&#xff0c;转变成一个与原问题类似的&#xff0c;规模更小的问题来进行求解。 递归的三大要素 函数的参数。在用递归解决问题时&…...

Sermant标签路由能力在同城双活场景的应用

作者&#xff1a;聂子雄 华为云高级软件工程师 摘要&#xff1a;目前应用上云已成为趋势&#xff0c;用户也对应用在云上的高可靠方案有更高追求&#xff0c;目前同城双活场景作为应用高可靠方案中的一种常见实践方案&#xff0c;对微服务流量提出了数据中心亲和性的要求&…...

javascript-obfuscator混淆

安装 npm install javascript-obfuscator -g 配置 重度混淆&#xff0c;性能低 性能下降50-100% { "compact": true, "controlFlowFlattening": true, "controlFlowFlatteningThreshold": 0.75, // 设置为0到1之间的值 "deadCodeI…...

GitHub项目里的api

在一个GitHub项目中提到的"api"通常指的是该项目提供的应用程序编程接口&#xff08;Application Programming Interface&#xff09;。这意味着该项目包含了一套规则和工具&#xff0c;允许其他开发者通过代码调用该接口来与项目功能互动、获取数据或执行特定任务。…...

k8s可练习实验分享

实验环境介绍&#xff1a;单master节点&#xff0b;3node节点 环境已提前配置完毕&#xff0c;如果你环境还未做&#xff0c;请移步 k8s集群V1.27.3安装 在 k8s 上可以做许多实验来提升你的动手能力和理解。以下是一些常见且有用的实验项目&#xff1a; 1、部署一个简单的应用…...

浏览器支持http-flv协议

Google Chrome 浏览器和Microsoft Edge 浏览器原生并不支持 HTTP-FLV 协议。HTTP-FLV 主要与 Flash Player 相关&#xff0c;而 Flash Player 已经在 2020 年底停止支持&#xff0c;并且 Microsoft Edge 也逐步淘汰了对 Flash 的支持。 flv.js 利用 HTML5 和 Media Source Exte…...

一千题,No.0077(计算谱半径)

在数学中&#xff0c;矩阵的“谱半径”是指其特征值的模集合的上确界。换言之&#xff0c;对于给定的 n 个复数空间的特征值 { a1​b1​i,⋯,an​bn​i }&#xff0c;它们的模为实部与虚部的平方和的开方&#xff0c;而“谱半径”就是最大模。 现在给定一些复数空间的特征值&a…...

安卓/iOS/Linux系统影音边下边播P2P传输解决方案

在当今的数字时代&#xff0c;IPTV 影音行业正经历着快速的发展和变革&#xff0c;但影音行业的流量带宽成本一直很高&#xff0c;有没有什么办法既能保证现有的用户观看体验&#xff0c;又能很好降低流量带宽成本呢? P2P技术可能是一个很好的选择&#xff0c;它不仅仅可以提…...

STORM论文阅读笔记

这是篇NIPS2023的 world model 论文文章提出&#xff0c;WM的误差会在训练过程中积累从而影响policy的训练&#xff0c;向WM中加噪声可以改善这一点。其他的流程和IRIS差不多&#xff0c;差别在以下几点&#xff1a; image encoder&#xff0c;IRIS用的VQVAE, 本文用的是VAE&am…...

Web前端遇到的难题:挑战与突破之路

Web前端遇到的难题&#xff1a;挑战与突破之路 在快速发展的互联网时代&#xff0c;Web前端技术作为连接用户与应用程序的桥梁&#xff0c;扮演着举足轻重的角色。然而&#xff0c;在实际开发中&#xff0c;Web前端开发者往往会遇到诸多难题。本文将从四个方面、五个方面、六个…...

C#防止多次注册事件

事件声明和使用部分的代码&#xff0c;防止多次注册事件主要通过判断事件中类型的委托实例是否为空实现 public class ReRegisterEvent {public delegate void Mydelegate(string message);private Mydelegate? mydel;public event Mydelegate Myevent{add{if (mydel null){…...

【UML用户指南】-16-对高级结构建模-构件

目录 1、概念 2、构件与接口 3、可替换性 4、组织构件 5、端口 6、内部结构 6.1、部件 6.2、连接件 7、常用建模技术 7.1、对结构类建模 7.2、对API建模 构件是系统中逻辑的并且可替换的部分&#xff0c;它遵循并提供对一组接口的实现。好的构件用定义良好的接口来定…...

双Token方案实现Token自动续期(基于springboot+vue前后端分离项目)

文章目录 前言一、双Token方案介绍1. 令牌类型与功能2.双Token方案的优点3.实现流程 二、具体实现1.后端实现1.1 jwt工具类1.2 响应工具类1.3 实体类1.4 过滤器1.5 controller1.6 启动类 2、前端实现2.1 登录页面2.2 index页面2.3 请求拦截器和响应拦截器 效果展示 前言 更多j…...

别太小看“静态免杀“

0x01 简述 免杀总体来说可分为两种&#xff0c;静态免杀/动态免杀。往往来说&#xff0c;我们更注重于在内部代码层面实现一些免杀技巧&#xff0c;但在有些时候&#xff0c;动态免杀静态免杀以"打组合拳"的方式效果往往会更出人所料。 当我们的程序生成后&#xf…...

SQL server 内连接 左连接 右连接 全连接 语句

在SQL Server中&#xff0c;连接&#xff08;JOIN&#xff09;操作用于从两个或多个表中检索相关数据。内连接、左连接、右连接和全连接是最常用的几种连接类型。下面详细介绍每种连接的用法和区别&#xff1a; 1. 内连接 (INNER JOIN) 内连接只返回两个表中满足连接条件的匹…...

k8s中的pod域名解析失败定位案例

问题描述 我在k8s中启动了一个Host网络模式的pod&#xff0c;这个pod的域名解析失败了。 定位步骤 敲kubectl exec -it [pod_name] -- bash进入pod后台&#xff0c;查看/etc/resolv.conf&#xff0c;发现nameserver配的有问题。这里我预期的nameserver应该使用宿主机的&…...

jingxiang制作

文章目录 jingxiang制作为什么需要jingxiang制作如何进行jingxiang制作 快照方式制作jingxiang制作命令do cker commit 快照制作jingxiang创建临时工作目录编写一个实例代码启动一个容器替换国内软件源安装编译软件源代码拷贝到容器中编译运行提交为一个jingxiang测试是否可以正…...

【数据结构】线性表之《顺序表》超详细实现

顺序表 一.数据结构1.逻辑结构2.物理结构 二.顺序表的分类1.静态顺序表2.动态顺序表 三.顺序表的实现1.创建顺序表2.初始化顺序表3.判断是否扩容4.打印顺序表5.插入操作1.头插2.尾插3.按照下标插入 6.删除操作1.头删2.尾删3.按照下标删除 7.查找数据8.修改数据9.清空顺序表10.销…...

浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)

✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义&#xff08;Task Definition&…...

XCTF-web-easyupload

试了试php&#xff0c;php7&#xff0c;pht&#xff0c;phtml等&#xff0c;都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接&#xff0c;得到flag...

STM32+rt-thread判断是否联网

一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...

【机器视觉】单目测距——运动结构恢复

ps&#xff1a;图是随便找的&#xff0c;为了凑个封面 前言 在前面对光流法进行进一步改进&#xff0c;希望将2D光流推广至3D场景流时&#xff0c;发现2D转3D过程中存在尺度歧义问题&#xff0c;需要补全摄像头拍摄图像中缺失的深度信息&#xff0c;否则解空间不收敛&#xf…...

Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器

第一章 引言&#xff1a;语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域&#xff0c;文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量&#xff0c;支撑着搜索引擎、推荐系统、…...

2025盘古石杯决赛【手机取证】

前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来&#xff0c;实在找不到&#xff0c;希望有大佬教一下我。 还有就会议时间&#xff0c;我感觉不是图片时间&#xff0c;因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...

基于 TAPD 进行项目管理

起因 自己写了个小工具&#xff0c;仓库用的Github。之前在用markdown进行需求管理&#xff0c;现在随着功能的增加&#xff0c;感觉有点难以管理了&#xff0c;所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD&#xff0c;需要提供一个企业名新建一个项目&#…...

零知开源——STM32F103RBT6驱动 ICM20948 九轴传感器及 vofa + 上位机可视化教程

STM32F1 本教程使用零知标准板&#xff08;STM32F103RBT6&#xff09;通过I2C驱动ICM20948九轴传感器&#xff0c;实现姿态解算&#xff0c;并通过串口将数据实时发送至VOFA上位机进行3D可视化。代码基于开源库修改优化&#xff0c;适合嵌入式及物联网开发者。在基础驱动上新增…...

上位机开发过程中的设计模式体会(1):工厂方法模式、单例模式和生成器模式

简介 在我的 QT/C 开发工作中&#xff0c;合理运用设计模式极大地提高了代码的可维护性和可扩展性。本文将分享我在实际项目中应用的三种创造型模式&#xff1a;工厂方法模式、单例模式和生成器模式。 1. 工厂模式 (Factory Pattern) 应用场景 在我的 QT 项目中曾经有一个需…...

flow_controllers

关键点&#xff1a; 流控制器类型&#xff1a; 同步&#xff08;Sync&#xff09;&#xff1a;发布操作会阻塞&#xff0c;直到数据被确认发送。异步&#xff08;Async&#xff09;&#xff1a;发布操作非阻塞&#xff0c;数据发送由后台线程处理。纯同步&#xff08;PureSync…...