尝试 RHash

尝试 RHash

使用命令md5sum, sha1sumsha256sum我可以获取每行包含哈希值和路径的文本文件,并在单个命令中验证整个文件列表,例如sha1sum -c mydir.txt. (所述文本文件很容易通过循环find或其他方式生成。)

有没有办法对 CRC/CRC32 哈希值列表执行相同操作?

此类哈希值通常存储在类似 zip 的档案中,例如 ZIP 本身或 7z。例如:

$ unzip -v archive.zip 
Archive:  archive.zip
 Length   Method    Size  Cmpr    Date    Time   CRC-32   Name
--------  ------  ------- ---- ---------- ----- --------  ----
 8617812  Stored  8617812   0% 12-03-2015 15:20 13fda20b  0001.tif

或者:

$ 7z l -slt archive.7z

Path = filename
Size = 8548096
Packed Size =
Modified = 2015-12-03 14:20:20
Attributes = A_ -rw-r--r--
CRC = B2F761E3
Encrypted = -
Method = LZMA2:24
Block = 0

答案1

尝试 RHash

尝试RHash

有一些套餐适用于 西格文,德班

例子

$ echo -n a > a.txt; echo -n b > b.txt; echo -n c > c.txt

$ rhash --crc32 --simple *.txt > checksums.crc32

$ cat checksums.crc32
e8b7be43  a.txt
71beeff9  b.txt
06b9df6f  c.txt

$ rhash --crc32 --check checksums.crc32
--( Verifying checksums.crc32 )-------------------------------------------------
a.txt                                               OK
b.txt                                               OK
c.txt                                               OK
--------------------------------------------------------------------------------
Everything OK

注1:--简单格式

如果您不使用--simple格式化选项,那么 rhash 将默认为不同的格式。这可能不是您想要的:

$ rhash --crc32 *.txt
; Generated by RHash v1.3.7 on 2020-06-03 at 16:02.51
; Written by Kravchenko Aleksey (Akademgorodok) - http://rhash.sf.net/
;
;            1  15:58.36 2020-06-03 a.txt
;            1  15:58.36 2020-06-03 b.txt
;            1  15:58.36 2020-06-03 c.txt
a.txt E8B7BE43
b.txt 71BEEFF9
c.txt 06B9DF6F

注2:--all选项

如果你想疯狂:试试--all选项一次获取所有支持的哈希值。

答案2

crc32实用程序没有类似-c的选项sha1sum。不过,验证可以在脚本中完成。

假设我们已将 crc32 值存储在文件中,格式与 sha1sum 打印值相同:

a8374911 *file1.ext
32c5188e *file2
6592d5e5 *bflmpsvz

可以通过 bash 脚本检查 crc32:

while read line
do 
   name=${line#* \*}
   crc32=`crc32 "$name"`
   echo -n "$name: "
   if [ "${line% \**}" == "$crc32" ]
   then
      echo OK
   else
      echo FAILED
   fi
done < file_with_crc32

该脚本提供与 相同的输出sha1sum -c。它迭代文件中的所有行file_with_crc32以及每一行

  • 从读取行检索文件名
  • 计算 CRC32
  • 将计算值与文件中的值进行比较
  • 打印结果

相关内容