标签: checksum

CRC-32(c) 适用于大文件吗?(最多 100 MB)

我想保留一组文件的校验和,以便注意到静默损坏/位腐烂,因为我认为我的文件系统(ext4)不关心并且 btrfs 还不太值得信赖。

每个文件的大小最大约为 100 MB,但通常约为 2 - 10 MB。CRC-32(c) 适合这种用途吗?哪一种更安全?(也许将 CRC 全部废弃并使用 MD4 代替?)介绍 CRC-32c 的论文“32-Bit Cyclic Redundancy Codes for Internet Applications”仅考虑最大 128 KiB 的消息:

http://www.ece.cmu.edu/~koopman/networks/dsn02/dsn02_koopman.pdf

我想避免将文件分成小块并对它们进行散列。

checksum

1
推荐指数
1
解决办法
2855
查看次数

如何验证 Zip 文件的 CRC-32 计算

我想验证我的 ZIP 文件是否具有正确的 CRC-32 校验和。
\n我读到,在 ZIP 文件中,CRC-32 数据位于字节 14 到 17 中:

\n
Offset  Bytes   Description[30]\n0        4  Local file header signature = 0x04034b50 (read as a little-endian number)\n4        2  Version needed to extract (minimum)\n6        2  General purpose bit flag\n8        2  Compression method\n10       2  File last modification time\n12       2  File last modification date\n14       4  CRC-32 of uncompressed data\n18       4  Compressed size\n22       4  Uncompressed size\n26       2  File name length (n)\n28       2  Extra field length (m)\n30       n  File name\n30+n     m  Extra field …
Run Code Online (Sandbox Code Playgroud)

zip crc32 checksum crc

1
推荐指数
1
解决办法
9903
查看次数

使用 gpg 格式以编程方式验证校验和

我想以编程方式验证Kafka二进制文件的 sha512 校验和。首先,我下载二进制文件和 sha512 sum 文本文件:

curl -fsSL -O \
    https://ftp.wayne.edu/apache/kafka/2.7.0/kafka_2.13-2.7.0.tgz
curl -fsSL -O \
    https://downloads.apache.org/kafka/2.7.0/kafka_2.13-2.7.0.tgz.sha512
Run Code Online (Sandbox Code Playgroud)

通过手动检查我知道校验和是正确的:

$ cat -ne kafka_2.13-2.7.0.tgz.sha512 
     1  kafka_2.13-2.7.0.tgz: F3DD1FD8 8766D915 0D3D395B 285BFA75 F5B89A83 58223814$
     2                        90C8428E 6E568889 054DDB5F ADA1EB63 613A6441 989151BC$
     3                        7C7D6CDE 16A871C6 674B909C 4EDD4E28$

$ sha512sum kafka_2.13-2.7.0.tgz
f3dd1fd88766d9150d3d395b285bfa75f5b89a835822381490c8428e6e568889054ddb5fada1eb63613a6441989151bc7c7d6cde16a871c6674b909c4edd4e28  kafka_2.13-2.7.0.tgz
Run Code Online (Sandbox Code Playgroud)

但是shasum/sha512sum似乎不喜欢.512进行程序验证的文件格式(0 成功时退出代码,1 失败时退出代码)。

$ cat -ne kafka_2.13-2.7.0.tgz.sha512 
     1  kafka_2.13-2.7.0.tgz: F3DD1FD8 8766D915 0D3D395B 285BFA75 F5B89A83 58223814$
     2                        90C8428E 6E568889 054DDB5F ADA1EB63 613A6441 989151BC$
     3                        7C7D6CDE …
Run Code Online (Sandbox Code Playgroud)

bash checksum sha512 apache-kafka

1
推荐指数
1
解决办法
986
查看次数

在文件和文本上执行 CRC32 时有所不同

我有一个名为 hello.txt 的文件,其中包含以下内容:

hello
Run Code Online (Sandbox Code Playgroud)

当我在该文件上执行 linux crc32 时,如下所示:(我通过 sudo apt install libarchive-zip-perl 安装)

crc32 hello.txt
Run Code Online (Sandbox Code Playgroud)

我得到:

363a3020
Run Code Online (Sandbox Code Playgroud)

当我想使用一些在线计算器或 npm 库(来自 node.js 的 crc)时,我仅在文本上执行并得到以下结果:

3610a686
Run Code Online (Sandbox Code Playgroud)

这是不同的。我怎样才能检查这个结果是否相同?这里有什么区别?有人可以解释一下吗?

linux crc32 checksum crc

1
推荐指数
1
解决办法
768
查看次数

FIPS 140-2 是否允许使用 MD5 作为校验和

我使用 MD5 作为校验和。我的软件符合 FIPS 140-2 标准,当我使用 MD5 进行校验和时,它不会引发任何错误/异常。在哪里可以找到说明 FIPS 140-2 允许使用 MD5 进行校验和的文档。

更新:

我工作的产品中的软件。我们的 java 在严格的 FIPS 模式下运行,我们的应用程序部署在 tomcat 中。我们计算所有可下载工件的 MD5 校验和,并将其显示在我们的管理控制台中,以便用户在下载后验证工件。

checksum md5 cryptography fips

1
推荐指数
1
解决办法
1442
查看次数

如何使用Perl将数据从有缺陷的DVD复制到我的硬盘?

情况是这样的:我的系统(Win XP Pro)无法从DVD磁盘复制一个巨大的视频文件(大约6演出),这可能是有缺陷的,有划痕的或者其他什么但可以使用带有几帧的mplayer播放虽然充满马赛克.当复制过程持续一段时间后,系统将中止工作并向我发出警告"发生循环冗余校验校验和错误".然后复制的所有内容都会自动删除.

我在想Perl应用可能会解决这个问题.我的想法是:我一次复制一兆的视频数据.如果发生读取错误,我让perl忽略这个特定的1兆的数据,并且一次复制其余的视频仍然是一个兆字节.

顺便说一句,我也注意到一些商业软件可以完成这项工作,但试验中存在局限性.

以下脚本是我到目前为止尝试过的.它一次从有缺陷的DVD磁盘复制数据一兆,但它像Win XP一样失败.唯一的区别是perl不会删除已经复制的内容.就我而言,它将大约900兆的视频数据复制到我的硬盘上,这个900兆的部分视频仍然可以用mplayer播放.但我的目标是复制所有好的,大多数,只留下所有坏的,少数.

    use strict;
    use warnings;

    $/ = \1_048_576;  

    open my $in, "<", 'D:\tobecopied.mkv' or die $!;
        binmode $in;
    open my $out, ">", 'E:\copied.mkv' or die $!;
        binmode $out;

    while (<$in>) {
        print $out $_;
    }
Run Code Online (Sandbox Code Playgroud)

问题是我不知道如何实现这一目标.希望有人在这里可以给我一个提示或线索.总是如此谢谢:)

perl checksum copy crc

0
推荐指数
1
解决办法
866
查看次数

这个校验和计算是否完全防水?

long make_checksum(const char* str)
{
  long chk=0;
  long rot=0;
  while(*str)
  {
    rot<<=9;
    rot|=(rot>>23);
    rot^=*(char*)str++;
    chk+=rot;
  }
  return chk;
}
Run Code Online (Sandbox Code Playgroud)

不防水意味着:我有可能为两个不同的琴弦获得相同的校验和.

checksum bit-manipulation

0
推荐指数
1
解决办法
283
查看次数

Xcode构建阶段

嘿,我正在我的应用程序上实现MD5校验和(用于防止二进制破解).我创建了一个命令行工具,它将为二进制文件生成哈希值,并将其添加到.app文件夹中.但是,我没有弄清楚如何将其添加为构建阶段.我没有运气就读过Apple的文档.任何人都可以解释我如何一步一步地做到这一点?

谢谢!

binary xcode checksum md5 build

0
推荐指数
1
解决办法
2014
查看次数

具有大文件的 Java CRC (Adler)

我有以下情况:一个包含大文件的目录树(大约 5000 个文件,大小约为 4Gb)。我需要在这棵树中找到重复项。

我尝试使用 Java 内置的 CRC32 和 Adler32 类,但它非常慢(每个文件大约 3-4 分钟)。

代码是这样的:

1) Init map <path, checksum>
2) Create CheckSum instance (CRC32 or Adler32);
3) Read file per block (10-100 bytes);
4) In each iteration call update()
5) Result checksum passed in map <path, summ>
6) Find duplicates
Run Code Online (Sandbox Code Playgroud)

问题:有什么方法可以加快第 3-4 行校验和的收集速度吗?

java checksum large-files

0
推荐指数
1
解决办法
2197
查看次数

如何将crc-32修改为crc-32 / mpeg-2

我正在尝试编写一个函数,以将设备的CRC 32输出与我计算出的实际CRC-32总和相匹配。以下是我的代码:

#include <iostream> 
#include <string.h> 
#define CRC32_POLYNOMIAL 0xEDB88320
using namespace std;
unsigned int crc32b(unsigned char *message,size_t l)
{
   int i, j;
   unsigned int byte, crc, mask;

   i = 0;
   crc = 0xFFFFFFFF;
   while (i<l) {
      byte = message[i];            // Get next byte.
      crc = crc ^ byte;
      for (j = 7; j >= 0; j--) {    // Do eight times.
         mask = -(crc & 1);
         crc = (crc >> 1) ^ (0xEDB88320 & mask);
      }
      i = i + …
Run Code Online (Sandbox Code Playgroud)

c++ crc32 checksum crc

0
推荐指数
1
解决办法
818
查看次数

如何创建两个大小和修改日期相同的文件?

我们正在使用一些备份工具将文件从源复制到目标。其中一部分是 MD5 检查文件以查看内容是否已更改。

如何在我的计算机上创建两个大小和创建日期相同但内容不同的文件?有我可以使用的脚本或在线服务吗?我想将它们用于测试场景,例如

  1. 文件大小相同,时间戳不同=同步文件到备份
  2. 文件相同大小不同内容相同时间戳=同步文件到备份

Bash 或 Python 在脚本方面都可以。我们目前希望rsync --checksum与 结合使用,但需要测试特定场景以确保这些工具能够满足我们的要求。aws s3 sync

谢谢

bash rsync checksum amazon-s3 amazon-web-services

0
推荐指数
1
解决办法
96
查看次数