L'éditeur php Xigua est là pour vous présenter comment utiliser Python pour vérifier la valeur de hachage go.mod dans sum.golang.org. sum.golang.org est un service officiel de vérification des hachages des modules Go, qui aide les développeurs à garantir l'intégrité et la sécurité de leurs modules. En utilisant la bibliothèque de requêtes et la bibliothèque hashlib de Python, nous pouvons facilement obtenir et comparer la valeur de hachage du fichier go.mod pour garantir que le module que nous utilisons est digne de confiance. Jetons un coup d'œil aux étapes de mise en œuvre spécifiques ci-dessous.
Je dois vérifier le hachage du fichier go.mod fourni par sum.golang.org. Je dois utiliser PYTHON.
Par exemple - https://sum.golang.org/lookup/github.com/gin-gonic/ [email protected] Fichier https://proxy.golang.org/github.com/gin-gonic/ gin /@v/v1.6.2.mod
Nous sommes là :
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
S'il vous plaît, aidez-moi. Je connais la commande go
mais je dois utiliser python ici...
J'ai lu ce fil mais cela n'a pas aidé =(
Les choses semblent un peu plus compliquées que ça. J'ai suivi le fil de discussion que vous avez mentionné et j'ai trouvé cette réponse. De plus, si vous vous référez au code source de cette fonction, vous pourrez voir comment le hachage utilisé dans le module go est implémenté.
Cette version est valable :
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)
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!