标签: checksum

关于Http大文件下载的MD5校验和

MD5校验和广泛用于Http下载大文件的完整性检查.我的问题是,因为TCP本身提供了可靠的机制(即每个TCP包的校验和以确保其完整性).因此,简而言之,TCP是可靠的.Http基于TCP(因此Http也应该是可靠的),那么为什么我们需要另一种完整性检查机制(即MD5校验和)?

乔治,提前谢谢

checksum md5 tcp http integrity

7
推荐指数
2
解决办法
4729
查看次数

Java兼容的cksum功能

Java中是否有任何库/代码以与unix中的cksum命令一致的方式计算字节流的32位CRC?

java crc32 checksum crc

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

校验和是否为整数数组?

我有一个大小为4,9,16或25的数组(根据输入)并且数组中的数字相同但少一个(如果数组大小为9则数组中的最大元素将是8)数字从0开始, 我想做一些算法来为数组生成某种校验和,这样我就可以比较2个数组是否相等,而不是遍历整个数组并逐个检查每个元素.

我在哪里可以获得这类信息?我需要一些尽可能简单的东西.谢谢.

编辑:只是为了清楚我想要的东西:

- 数组中的所有数字都是不同的,因此[0,1,1,2]无效,因为存在重复的元素(1)

- 数字的位置很重要,所以[0,1,2,3]与[3,2,1,0]不一样

- 数组将包含数字0,因此这也应该被考虑在内.

编辑:

好吧,我试着在这里实现Fletcher的算法:http: //en.wikipedia.org/wiki/Fletcher%27s_checksum#Straightforward

int fletcher(int array[], int size){
  int i;
  int sum1=0;
  int sum2=0;
  for(i=0;i<size;i++){
    sum1=(sum1+array[i])%255;
    sum2=(sum2+sum1)%255;
  }
  return (sum2 << 8) | sum1;
}
Run Code Online (Sandbox Code Playgroud)

说实话,我不知道返回线做了什么但不幸的是,算法不起作用.对于数组[2,1,3,0]和[1,3,2,0],我得到相同的校验和.

EDIT2:

好的,这是另一个,Adler校验和 http://en.wikipedia.org/wiki/Adler-32#Example_implementation

#define MOD 65521;

unsigned long adler(int array[], int size){
  int i;
  unsigned long a=1;
  unsigned long b=0;
  for(i=0;i<size;i++){
    a=(a+array[i])%MOD;
    b=(b+a)%MOD;
  }
  return (b <<16) | a;
}
Run Code Online (Sandbox Code Playgroud)

这也行不通.数组[2,0,3,1]和[1,3,0,2]生成相同的校验和.我在这里失去了希望,任何想法?

arrays algorithm checksum compare

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

为什么现代护照的机器可读区域中的复合校验位不考虑所有数据?

现代护照和身份证在其底部有一个机器可读区(MRZ),其中包含可能是OCR友好格式的基本识别信息.

MRZ的格式指定了多个校验位,用于帮助检测识别错误.例如,有一个校验数字,计算在文件编号,一个覆盖出生日期的校验位等.

最后还有一个"复合校验位",它在记录的下一行计算,从而提供更一般的整体完整性检查.

但是,包含姓名和姓氏的记录的"上排"不包含任何校验位,这意味着根本无法捕获错误或验证扫描的正确性.

我的问题如下:对于为什么在规范中做出这个选择有什么合理的解释吗?为什么规范不能提供至少一个覆盖记录中整个数据的校验位,从而促进了它所针对的"机器可读性"?该标准已经成熟并得到广泛应用,因此这不仅仅是一个错误,对吗?

我知道这个问题有些不同寻常,但我不知道在哪里可以找到答案 - 欢迎建议和实际答案.

ocr checksum specifications passport.js

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

Fletcher32校验和算法的正确性

我很难搞清楚Fletcher校验和算法的32位变体的哪个实现是正确的.Wikipedia提供以下优化实现:

uint32_t fletcher32( uint16_t const *data, size_t words ) {
        uint32_t sum1 = 0xffff, sum2 = 0xffff;
        size_t tlen;

        while (words) {
                tlen = words >= 359 ? 359 : words;
                words -= tlen;
                do {
                        sum2 += sum1 += *data++;
                } while (--tlen);
                sum1 = (sum1 & 0xffff) + (sum1 >> 16);
                sum2 = (sum2 & 0xffff) + (sum2 >> 16);
        }
        /* Second reduction step to reduce sums to 16 bits */
        sum1 = (sum1 & …
Run Code Online (Sandbox Code Playgroud)

c algorithm checksum correctness

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

比较两个服务器之间的文件校验和并报告不匹配

我必须比较远程服务器中此文件夹中的文件/primary/secondary文件夹中的所有文件的校验和.远程服务器将包含大量文件以及我们所拥有的文件.machineA/bat/snap/machineBmachineA

  • 如果校验和中存在任何不匹配,那么我想报告所有那些在machineA完整路径中出现问题并以非零状态代码退出的文件.
  • 如果一切都匹配则退出零.

我写了一个命令(不确定是否有更好的方法来编写它)我正在运行,machineA但它非常慢.有没有办法让它更快?

(cd /primary && find . -type f -exec md5sum {} +; cd /secondary && find . -type f -exec md5sum {} +) | ssh machineB '(cd /bat/snap/ && md5sum -c)'
Run Code Online (Sandbox Code Playgroud)

它也打印出这样的文件名./abc_monthly_1536_proc_7.data: OK.有没有什么方法可以打印出该文件的完整路径名machineA

ssh到远程主机的每个文件肯定不是很有效.parallel可以通过同时执行更多文件来加快速度,但更有效的方法是稍微调整一下命令,以便ssh到machineB并一次性获取所有md5sum.这可能吗?

linux bash shell checksum md5sum

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

CRC校验和使用长(64位)

我检查了CRC64的不同实现.例如,这个,这个这个.所有这些的问题是它们使用字节.但是,在64位系统上,我想使用long(8字节).通过这种方式,我需要减少迭代次数.例如,对于128字节的数据,使用a byte,我需要迭代128次,而使用long,我需要迭代16次.

是否有任何CRC64实现使用long甚至字长大于一个字节?可以修改这些方案吗?

c checksum

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

UDP-可选校验和

根据我对UDP的了解,它没有错误处理,没有检查发送/接收的数据序列,没有检查重复的数据包,没有检查损坏的数据包以及显然不能保证已接收发送的数据包。 。

因此,考虑到这一点,为什么实际上在UDP中存在使用校验和的选项?因为可以肯定的是,如果您要确保以正确的顺序接收发送的数据(而不损坏等),则可以使用TCP ...

谢谢你的时间 :)

error-handling checksum udp tcp packet

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

如何在SFTP文件传输期间执行校验和以确保数据完整性?

我需要为SFTP执行校验和(用于数据完整性).我希望这可以在SFTP文件传输期间完成 - 我意识到这可能是产品依赖的(仅供参考:使用CLEO VLTrader),但是想知道这是否习惯?

我也在寻找与使用校验和算法一样好(或更好)的替代数据完整性检查选项.谢谢!

sftp checksum data-integrity

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

获取文件SHA256哈希码和校验和

以前我问了一个关于组合SHA1 + MD5 的问题,但之后我理解计算SHA1然后延迟文件的MD5并不比SHA256快.在我的情况下,4.6 GB文件大约需要10分钟,在Linux系统中使用默认实现SHA256和(C#MONO).

public static string GetChecksum(string file)
{
    using (FileStream stream = File.OpenRead(file))
    {
        var sha = new SHA256Managed();
        byte[] checksum = sha.ComputeHash(stream);
        return BitConverter.ToString(checksum).Replace("-", String.Empty);
    }
}
Run Code Online (Sandbox Code Playgroud)

然后我读了这个主题,并以某种方式根据他们所说的改变我的代码:

public static string GetChecksumBuffered(Stream stream)
{
    using (var bufferedStream = new BufferedStream(stream, 1024 * 32))
    {
        var sha = new SHA256Managed();
        byte[] checksum = sha.ComputeHash(bufferedStream);
        return BitConverter.ToString(checksum).Replace("-", String.Empty);
    }
}
Run Code Online (Sandbox Code Playgroud)

但它没有这样的感情,需要大约9分钟.

然后我尝试通过sha256sumLinux中的命令测试我的文件中的相同文件,它需要大约28秒,上面的代码和Linux命令都给出相同的结果!

有人建议我阅读Hash Code和Checksum之间的区别,然后我会谈到这个解释差异的主题.

我的问题是:

  1. 是什么导致上述代码和Linux之间的这种不同sha256sum? …

c# mono checksum hashcode sha256

6
推荐指数
2
解决办法
1万
查看次数