如何在python-flask中为文件对象创建md5哈希?我已经尝试使用以下代码创建:
md5_hash = hashlib.md5()
md5_hash.update(file)
digest = md5_hash.hexdigest()
base64_encoded_md5 = base64.b64encode(digest.encode("utf-8"))
base64_encoded_md5_string = str(base64_encoded_md5.decode("utf-8"))
我在boto3 s3_client.upload_filobj((函数中使用SSE-C加密,因此也在ExtraArgs中传递SSECustomerAlgorithm、SSECustomerKey和SSECustomerKeyMD5。
这里,SSECustomerKeyMD5高于base64_encoded_md5_string值。
在我获取MD5散列的实现中有什么错误吗?
amazon是如何为同一个文件对象创建MD5哈希的?
boto3依赖项中有没有内置函数可以用来获取MD5哈希值?
我调试了整个问题,boto3.s3.inject包含upload_filobj((函数。它正在上传文件并作为响应,返回图片中的以下响应。boto3.s3.注入响应
许多天来,我一直在为这个问题绞尽脑汁。请帮忙。
[已解决]:修改了我的加密密钥生成算法,生成32位字符串。早些时候是16位造成了问题。还从upload_filobj((中的ExtraArgs中删除了SSECustomerKeyMD5,因为boto3在botocore.client.make_api_call.中发出实际请求之前,会在内部计算加密密钥本身的MD5哈希,并将其添加到请求头中
简而言之,
- 从ExtraArgs中删除SSECustomerKeyMD5
- 修改了CustomerKey/EEncryptionKey生成算法以生成32位字符串
关注shimo的回答以及在python中为boto3文件加密创建SSECustomerKey的正确方法是什么?这个答案。
您可以在Boto3文档中找到此解释,但它不在upload_fileobj部分。
SSECustomerKeyMD5(字符串(--指定根据RFC 1321的加密密钥。
您的代码似乎在计算文件的MD5,而不是加密密钥。