Python字符串校验和计算器



我设法提出了一个代码来计算文件校验和。以下是代码:

from Crypto.Hash import *
def get_file_checksum(filename):
    h = SHA384.new()
    chunk_size = 8192
    with open(filename, 'rb') as f:
        while True:
            chunk = f.read(chunk_size)
            if len(chunk) == 0:
                break
            h.update(chunk)
    return h.hexdigest()

现在,我想到了另一个功能来计算任何给定字符串的校验和。这是代码

def get_string_checksum(string):
    h = SHA384.new()
    h.update(string)
    return h.hexdigest()

我面临的问题是字符串校验和的输出与文件内容的输出不匹配。

对于我的系统上的特定文件,我得到这些值

get_file_checksum(filename)将得到:

d57eec87df9c5ec33baab34be4ac7695a59d80779d10e8920640fac62f4bfa2b0da0cef0b0d7d6d1e16cae5ca560cd95

get_string_checksum(string)将获得:

18044418f40f12e9601d0f15a7da46c114779ac337fd8fe513a122e2aa95a9b5e05d6b00d46d0682c0054c5f2b3355c0

我使用的一个参数的字符串与文件的内容相同。

我正在使用此网站验证校验和

get_string_checksum(string)有问题?

剥离文件阅读功能中的空白,如:

def get_file_checksum(filename):
    h = SHA384.new()
    chunk_size = 8192
    with open(filename, 'rb') as f:
        while True:
            chunk = f.read(chunk_size).strip()
            if not chunk:
                break
            h.update(chunk)
    return h.hexdigest()

您可以使用此简单的8位XOR校验和

str = "+12.2/-20.4/374/86/-12/11611/-1250/6.12347/-75.123456/85/12/-5.5/-1.2/5/6218"
let cs = 0;
for (let char of str)
    cs ^= char.charCodeAt(0)
console.log(cs.toString(16))

它基本上是拿起字符串并获取XOR校验和

source = 8位XOR校验和stackoverflow

最新更新