簡體   English   中英

使用Boto庫如何/何時計算s3上傳的md5哈希

[英]How/when to calculate md5 hash of s3 uploads using Boto library

boto / s3模塊中,有一個名為set_contents_from_filename函數,該函數似乎將md5哈希作為參數。

但是文檔尚不清楚何時/如何計算哈希值。 有人可以幫我嗎? 另外,如何將哈希信息保存到文件中?

set_contents_from_filename方法將自動為您計算MD5校驗和。 此方法有一個可選的md5參數,如果由於某種原因已經在應用程序中計算出了MD5,則允許您傳入MD5,但是如果沒有傳入值,則boto會為您進行計算。

正如@garnatt所說的, set_contents_from_filename方法將自動為您計算MD5校驗和。

如果您查看這些文檔,則有一種稱為compute_md5的方法,該方法以compute_md5形式返回包含MD5校驗和的元組(您使用md5sum進入控制台的內容),還以base64編碼將其發送到Amazon,這就是您在標頭。

set_contents_from_filename方法中的md5參數采用元組格式的MD5校驗和,與compute_md5返回的方式相同。 如果您需要手動計算,最好的方法是使用compute_md5方法。 否則,您必須以正確的格式構建元組,然后再將其傳遞給md5參數。

boto計算的MD5是校驗和的基數64編碼。 可以通過以下方式計算要上傳/已經上傳的給定文件的標頭中的“ Content-MD5”:

import hashlib, base64
conn = S3Connection(access_key, secret_key)
bucket = conn.get_bucket('bucket_name')
#If you want to calculate MD5 of a file already uploaded
obj_key = bucket.get_key('file_name_in_s3')
content = obj_key.get_contents_as_string()
m = hashlib.md5()
m.update(content)
value = m.digest()
remote_md5 = base64.b64encode(value)

#To calculate md5 of a file to be uploaded to S3
cur_md5 = base64.b64encode(hashlib.md5(open('Local/Path/To/File').read()).digest())

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM