php-Editor Xigua ist hier, um vorzustellen, wie man mit Python den go.mod-Hash-Wert in sum.golang.org überprüft. sum.golang.org ist ein offizieller Dienst zur Überprüfung von Hashes von Go-Modulen, der Entwicklern hilft, die Integrität und Sicherheit ihrer Module sicherzustellen. Mithilfe der Anforderungsbibliothek und der Hashlib-Bibliothek von Python können wir den Hashwert der Datei go.mod problemlos abrufen und vergleichen, um sicherzustellen, dass das von uns verwendete Modul vertrauenswürdig ist. Werfen wir einen Blick auf die konkreten Umsetzungsschritte weiter unten.
Ich muss den Hash der von sum.golang.org bereitgestellten go.mod-Datei überprüfen. Ich muss PYTHON verwenden.
Zum Beispiel – https://sum.golang.org/lookup/github.com/gin-gonic/ [email protected] Datei https://proxy.golang.org/github.com/gin-gonic/ gin /@v/v1.6.2.mod
Wir sind hier:
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
Bitte hilf mir. Ich kenne den Befehl go
, aber ich muss hier Python verwenden ...
Ich habe diesen Thread gelesen, aber es hat nicht geholfen =(
Die Dinge scheinen etwas komplizierter zu sein. Ich habe das von Ihnen erwähnte Thema verfolgt und diese Antwort gefunden. Wenn Sie sich außerdem den Quellcode dieser Funktion ansehen, können Sie sehen, wie der im Go-Modul verwendete Hash implementiert ist.
Diese Version ist gültig:
import hashlib import base64 def calculate_sha256_checksum(data): sha256_hash = hashlib.sha256() sha256_hash.update(data.encode('utf-8')) return sha256_hash.digest() # Specify the file path file_path = 'go.mod' # Read the file content with open(file_path, 'r') as file: file_content = file.read() # Calculate the SHA256 checksum of the file content checksum1 = calculate_sha256_checksum(file_content) # Format the checksum followed by two spaces, filename, and a new line formatted_string = f'{checksum1.hex()} {file_path}\n' # Calculate the SHA256 checksum of the formatted string checksum2 = calculate_sha256_checksum(formatted_string) # Convert the checksum to base64 base64_checksum = base64.b64encode(checksum2).decode('utf-8') print(base64_checksum)
Das obige ist der detaillierte Inhalt vonWie überprüfe ich go.mod-Hashes in sum.golang.org mit Python?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!