相关疑难解决方法(0)

如何在没有Git的情况下将Git SHA1分配给文件?

据我所知,当Git为文件分配SHA1哈希时,该SHA1对于文件的内容是唯一的.

因此,如果文件从一个存储库移动到另一个存储库,则该文件的SHA1保持不变,因为其内容未更改.

Git如何计算SHA1摘要?它是在完整的未压缩文件内容上执行的吗?

我想模仿在Git之外分配SHA1.

git sha1

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

git如何计算文件哈希值?

存储在树对象git ls-tree中的SHA1哈希值(由返回的sha1sum)与文件内容的SHA1哈希值不匹配(由返回)

$ git cat-file blob 4716ca912495c805b94a88ef6dc3fb4aff46bf3c | sha1sum
de20247992af0f949ae8df4fa9a37e4a03d7063e  -
Run Code Online (Sandbox Code Playgroud)

git如何计算文件哈希值?它是否在计算哈希值之前压缩内容?

git hash checksum sha1 git-hash

120
推荐指数
3
解决办法
4万
查看次数

使用hashlib在Python 3中计算文件的md5摘要

使用python 2.7,以下代码计算文件内容的mD5 hexdigest.

(编辑:嗯,不是因为答案已经显示,我只是这么认为).

import hashlib

def md5sum(filename):
    f = open(filename, mode='rb')
    d = hashlib.md5()
    for buf in f.read(128):
        d.update(buf)
    return d.hexdigest()
Run Code Online (Sandbox Code Playgroud)

现在,如果我使用python3运行该代码,则会引发TypeError异常:

    d.update(buf)
TypeError: object supporting the buffer API required
Run Code Online (Sandbox Code Playgroud)

我发现我可以使用python2和python3运行代码,将其更改为:

def md5sum(filename):
    f = open(filename, mode='r')
    d = hashlib.md5()
    for buf in f.read(128):
        d.update(buf.encode())
    return d.hexdigest()
Run Code Online (Sandbox Code Playgroud)

现在我仍然想知道为什么原始代码停止工作.看来,当使用二进制模式修饰符打开文件时,它返回整数而不是编码为字节的字符串(我说因为type(buf)返回int).这种行为是在某处解释的吗?

python hashlib python-3.x

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

标签 统计

git ×2

sha1 ×2

checksum ×1

git-hash ×1

hash ×1

hashlib ×1

python ×1

python-3.x ×1