editor php Xigua di sini untuk memperkenalkan cara menggunakan Python untuk menyemak nilai cincang go.mod dalam sum.golang.org. sum.golang.org ialah perkhidmatan rasmi untuk mengesahkan cincangan modul Go, yang membantu pembangun memastikan integriti dan keselamatan modul mereka. Dengan menggunakan perpustakaan permintaan Python dan perpustakaan hashlib, kami boleh mendapatkan dan membandingkan nilai cincang fail go.mod dengan mudah untuk memastikan modul yang kami gunakan boleh dipercayai. Mari kita lihat langkah pelaksanaan khusus di bawah.
Saya perlu mengesahkan cincangan fail go.mod yang disediakan oleh sum.golang.org. Saya perlu menggunakan PYTHON.
Contohnya - https://sum.golang.org/lookup/github.com/gin-gonic/ [emel dilindungi] Fail https://proxy.golang.org/github.com/gin-gonic/ gin //v/v1.6.2.mod
Kami di sini:
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
Tolong bantu saya. Saya tahu tentang arahan go
tetapi saya perlu menggunakan python di sini...
Saya telah membaca benang ini tetapi tidak membantu =(
Segala perkara kelihatan lebih rumit daripada itu. Saya mengikuti topik yang anda nyatakan dan mendapati jawapan ini. Selain itu, jika anda merujuk kepada kod sumber fungsi ini, anda boleh melihat cara cincang yang digunakan dalam modul go dilaksanakan.
Versi ini sah:
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)
Atas ialah kandungan terperinci Bagaimana untuk menyemak hash go.mod dalam sum.golang.org menggunakan Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!