diff options
author | Steven Le Rouzic <steven.lerouzic@gmail.com> | 2025-01-20 00:22:55 +0100 |
---|---|---|
committer | Steven Le Rouzic <steven.lerouzic@gmail.com> | 2025-01-20 00:22:55 +0100 |
commit | c9aa86f73d2fc2b5308ce7691050701eb627e4f3 (patch) | |
tree | 533d3087832da3bd7b74a169c1160d32e17bba8c /integrity.py |
Initial commit
Diffstat (limited to 'integrity.py')
-rw-r--r-- | integrity.py | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/integrity.py b/integrity.py new file mode 100644 index 0000000..14bfe66 --- /dev/null +++ b/integrity.py @@ -0,0 +1,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]))
+
|