blob: 14bfe664e701b350a5e48078611c4e1d466ba7c6 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
import sys
import hashlib
import base64
from pathlib import Path
import requests
def file_hash(file_path: Path) -> str:
sha256_hash = hashlib.sha256()
with open(file_path, "rb") as file:
while True:
data = file.read(65536)
if not data:
break
sha256_hash.update(data)
return "sha256-" + base64.b64encode(sha256_hash.digest()).decode()
def url_hash(url: str) -> str:
sha256_hash = hashlib.sha256()
with requests.get(url, stream=True) as resp:
resp.raise_for_status()
while True:
data = resp.raw.read(65536)
if not data:
break
sha256_hash.update(data)
return "sha256-" + base64.b64encode(sha256_hash.digest()).decode()
if __name__ == "__main__" and len(sys.argv) > 1:
path = Path(sys.argv[1])
if path.exists():
print(file_hash(path))
else:
print(url_hash(sys.argv[1]))
|