标签: checksum

如果文件日期和时间修改,文件的 MD5 是否会更改

我有一个 rar 文件,它是文件的集合。我已经使用 python 代码在 rar 文件上生成了 MD5 校验和,如下所示,然后假设 rar 文件生成的 md5 是 XXX。当我刚刚提取 rar 文件(没有修改/添加文件)并再次创建 rar 文件时,我观察到校验和已更改(除 XXX 之外)。

import hashlib
hashlib.md5("filename.rar").hexdigest()
Run Code Online (Sandbox Code Playgroud)

有没有像 CRC、校验和、SHA1 等算法,即使文件日期/时间发生变化并且文件的实际内容没有变化,计算出的校验和仍然相同?

python checksum md5 sha1 crc

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

如何在Perl中求和大十六进制值?

我正在迭代一组32位十六进制字符串("DEADBEEF","12345678"等),我试图将它们加在一起形成一个32位校验和.假设变量$temp在下面的示例中加载了一些十六进制字符串.

my $temp;
my $checksum;

for (...)
{
    #assume $temp is loaded with a new hex string here
    my $tempNum = hex ($temp);
    $checksum += $tempNum;
    $checksum &= 0xFFFFFFFF;
    print printf("checksum: %08X",$checksum);
}
Run Code Online (Sandbox Code Playgroud)

前几个值是"7800798C","44444444"和"44444444".输出是:

校验和:7800798C
校验和:BC44BDD0
校验和:FFFFFFFF
校验和:FFFFFFFF

等等..

你可以看到前两个总结是正确的,然后它似乎饱和.我错过了关于Perl变量大小限制的内容吗?

编辑:这是脚本的实际输出(字符串是十六进制字符串,值是该字符串的十进制转换,校验和是结果输出):

string: 7800798C, value: 2013297036, checksum 7800798C
string: 44444444, value: 1145324612, checksum BC44BDD0
string: 44444444, value: 1145324612, checksum FFFFFFFF
string: 44444444, value: 1145324612, checksum FFFFFFFF
string: 78007980, value: 2013297024, checksum FFFFFFFF
string: 44444444, value: 1145324612, checksum FFFFFFFF

perl hex checksum

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

这个校验和算法的名称是什么?

有谁知道以下函数中使用的校验和算法的正式/官方名称?


function Checksum($number, $encode = true)
{
    if ($encode === true)
    {
        $result = 0;
        $number = str_split($number, 1);

        foreach ($number as $value)
        {
            $result = ($result + ord($value) - 48) * 10 % 97;
        }

        return implode('', $number) . sprintf('%02u', (98 - $result * 10 % 97) % 97);
    }

    else if ($number === Checksum(substr($number, 0, -2), true))
    {
        return substr($number, 0, -2);
    }

    return false;
}
Run Code Online (Sandbox Code Playgroud)
function ifMB($entity, $reference, $amount = 0.00)
{
    $stack = 923;
    $weights = …
Run Code Online (Sandbox Code Playgroud)

php algorithm checksum semantics

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

8位二进制加法

有人可以解释如何使用8位二进制加法计算校验和吗?这是文档的摘录:

这是消息的一般形式:

STX | TYPE | FS | DATA | FS | CHK | ETX
Run Code Online (Sandbox Code Playgroud)

STX是HEX 02

ETX是HEX 03

FS是HEX 15

"类型"是唯一的1字节消息标识符(例如,用于轮询消息的"P")."数据"包含可打印的ASCII字符.

校验

校验和是根据所有字符计算的,包括和<FS>之间的所有字符.校验和通过所有包含字符的8位二进制加法计算,其中第8个或奇偶校验位假定为零.超过第8位的数据丢失了.8位结果转换为两个可打印的ASCII十六进制字符,范围从00到FF,然后插入到数据流中.十六进制字符AF是大写的.接收设备重新计算缓冲消息的校验和,并将其与收到的校验和进行比较.比较是后续确认()或传输的否定确认()的基础.<STX><CHK><CHK><ACK><NAK>

java delphi algorithm binary checksum

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

为什么帧校验序列位于以太网帧的末尾而不是其他位置

以太网帧校验序列始终附加到数据链路层中帧的末尾.为什么它被附加到帧的末尾而不是其他地方?

我考虑过它并认为它可能与如何计算CRC校验和有关,如果帧的结构是头+有效载荷+ crc而不是header + crc + payload,则更容易由硬件执行.

CRC执行形式(数据+填充)/除数的XOR除法,对于最终帧,填充由余数替换.接收器然后计算(数据+余数)/除数,并在结果为0时接受帧.

checksum ethernet data-link-layer crc

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

在我通过电子邮件发送给自己后,android中的md5校验和与md5不匹配

我用来将文件转换为字符串然后转换为mdf的函数如下所示.我正在输出文件路径和文件名,以确保一切都很酷.有什么我不考虑可以改变文件(实际上是视频mp4)的指纹吗?我在ubuntu上对md5sum进行检查.

private static String readFileToString(String filePath)
        throws java.io.IOException{

            StringBuffer fileData = new StringBuffer(1000);
            BufferedReader reader = new BufferedReader(
                    new FileReader(filePath));
            char[] buf = new char[1024];

            int numRead=0;
            while((numRead=reader.read(buf)) != -1){
                String readData = String.valueOf(buf, 0, numRead);
                fileData.append(readData);
                buf = new char[1024];
            }

            reader.close();
            System.out.println(fileData.toString());
            return fileData.toString();
        }

public static String getMD5EncryptedString(String encTarget){
  MessageDigest mdEnc = null;
  try {
      mdEnc = MessageDigest.getInstance("MD5");
  } catch (NoSuchAlgorithmException e) {
      System.out.println("Exception while encrypting to md5");
      e.printStackTrace();
  } // Encryption algorithm
  mdEnc.update(encTarget.getBytes(), 0, encTarget.length());
  String …
Run Code Online (Sandbox Code Playgroud)

java android checksum md5

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

TCP校验和计算与wireshark计算不匹配

我遇到的问题是,示例程序生成的tcp校验和(下面复制)与wireshark计算的校验和不匹配.有人可以指出我哪里出错了.在这里我尝试了两种方法

  1. tcp_checksum
  2. get_ipv6_udptcp_checksum.

使用这两个值,得到两个不同的值,两者都不匹配wireshark值.

我在这里复制IP和TCP标头的详细信息.

IP标头:

0000 60 00 00 00 00 2a 06 80 10 80 a2 b1 00 00 00 00

0010 00 00 00 00 00 1e 00 00 ff 00 00 00 00 00 00 00

0020 00 00 00 00 00 00 00 24

TCP标头:

0000 04 22 00 50 00 01 e0 dd 00 01 42 74 50 14 22 38

0010 eb 10 00 00

我的理解是,添加psuedo头和TCP头值将给出校验和.手动添加值会给出完全不同的值.以编程方式,当我尝试时,它是(38 eb).wireshark显示正确的值应为0xb348

我在哪里做错了?有人可以建议我如何手动完成?

#include <stdio.h>
#include <stdlib.h> …
Run Code Online (Sandbox Code Playgroud)

c unix checksum tcp

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

为什么这个Go代码的速度与Python相当(并且速度不是很快)?

我需要为超过1GB的文件计算sha256校验和(通过块读取文件),目前我正在使用python:

import hashlib
import time

start_time = time.time()


def sha256sum(filename="big.txt", block_size=2 ** 13):
    sha = hashlib.sha256()
    with open(filename, 'rb') as f:
        for chunk in iter(lambda: f.read(block_size), b''):
           sha.update(chunk)
    return sha.hexdigest()

input_file = '/tmp/1GB.raw'
print 'checksum is: %s\n' % sha256sum(input_file)
print 'Elapsed time: %s' % str(time.time() - start_time)
Run Code Online (Sandbox Code Playgroud)

我想尝试golang认为我可以获得更快的结果,但在尝试下面的代码后,它运行慢了几秒钟:

package main

import (
    "crypto/sha256"
    "fmt"
    "io"
    "math"
    "os"
    "time"
)   

const fileChunk = 8192

func File(file string) string {
    fh, err := os.Open(file)

    if err != nil {
        panic(err.Error()) …
Run Code Online (Sandbox Code Playgroud)

performance checksum go

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

MySQL行校验和

是否可以选择表中的整行并获得某种校验和?我正在寻找一种方法,告诉我的代码仅在更改了至少一条记录后才更新数据。从数据更改跟踪的角度来看,这将有助于我减少历史记录表中记录的许多更改。- 谢谢。

php mysql sql database checksum

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

如何使用javascript检查要上传的文件?

我想在上传之前在浏览器端对文件进行校验和,然后在服务器端进行校验和比较,以确保一致性。但是,如何获取文件的纯二进制数据并对其进行校验和?我尝试了下面的方法,但是不起作用:

let fileSelect = document.getElementById('file')
let files = fileSelect.files
let file = files[0]

var r = new FileReader();
r.onload = function(){ console.log(r.result); };
r.readAsArrayBuffer(file);
var file_sha1 = sha1(r.result)
Run Code Online (Sandbox Code Playgroud)

javascript checksum sha1 consistent-hashing

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