linux - 从命令行计算文件校验和

标签 linux shell scripting checksum

寻找在 Linux 发行版上随时可用的命令或一组命令,这些命令可以让我创建一个脚本来为文件生成校验和。

这个校验和是由我无法控制的构建系统生成的,方法是对文件中的每个字节求和,然后将该数字截断为 4 个字节。

我知道如何使用 node.js、perl、python、C/C++ 等工具执行此操作,但我需要能够在我无法修改的远程运行的基本 Linux 发行版上执行此操作(它在 PLC 上)。

有什么想法吗?我已经搜索了一段时间,但还没有找到任何看起来简单的东西。

最佳答案

使用许多原始 shell 命令逐字节求和并将该数字截断为 4 字节的解决方案。

#! /usr/bin/env bash

declare -a bytes
bytes=(`xxd -p -c 1 INPUT_FILE | tr '\n' ' '`)

total=0;
for(( i=0; i<${#bytes[@]}; i++));
do
    total=$(($total + 0x${bytes[i]}))
    if [ $total > 4294967295 ]; then
            total=$(($total & 4294967295))
    fi
done

echo "Checksum: " $total

关于linux - 从命令行计算文件校验和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30738442/

相关文章:

linux - 当我打开我的 vimrc 文件时,Vim 返回与 Vundle 相关的错误

c - 如何衡量互斥量争用?

perl - 如何查找具有小于特定计数的特定字符的行?

linux - 为什么这段代码在 bash 中不起作用?

python - 在文件中查找字符串并替换整行

regex - 如何找到一个模式,并以不同的方式替换它?

android - `flutter config --android-sdk/opt/android-sdk/` 在 arch linux 上无法工作我该如何配置?

linux - 如何从后台进程重定向日志

python - 阻止 Python 在 shebang 中生成 pyc 文件

javascript - 使用 GreaseMonkey 停止加载缓慢的脚本