我需要验证由sum.golang.org提供的go.mod文件的哈希值。我需要使用PYTHON。
例如-https://sum.golang.org/lookup/github.com/gin-gonic/[email protected]用于文件https://proxy.golang.org/github.com/gin-gonic/gin/@v/v1.6.2.mod
我们在这里:
import base64
import requests
import hashlib
import os
# some tmp file
tmp_file = os.path.abspath(os.path.dirname(__file__)) + '/tmp.mod'
# url for sumdb
link_sum_db = 'https://sum.golang.org/lookup/github.com/gin-gonic/[email protected]'
# our line:
# github.com/gin-gonic/gin v1.6.2/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M=
hash_from_sumdb = b'75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M='
print(hash_from_sumdb)
# b'75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M='
# download the file
f_url = 'https://proxy.golang.org/github.com/gin-gonic/gin/@v/v1.6.2.mod'
f_url_content = requests.get(f_url).content
with open(tmp_file, 'wb') as f:
f.write(f_url_content)
with open(tmp_file, 'rb') as f:
f_file_content = f.read()
# calculate hash from local tmp file
hash_from_file = base64.b64encode(hashlib.sha256(f_file_content).digest())
print(hash_from_file)
# b'x9T1RkIbnNSJydQMU9l8mvXfhBIkDhO3TTHCbOVG4Go='
# and it fails =(
assert hash_from_file == hash_from_sumdb
字符串
请帮助我。我知道go
命令,但我需要在这里使用python.
1条答案
按热度按时间u59ebvdq1#
这似乎比这更复杂一些。我跟踪了你提到的主题,发现了这个答案的更多细节。另外,如果你参考this function's source,你可以看到go模块中使用的哈希是如何实现的。
这个版本的作品:
字符串