我正在使用Python请求下载文件,然后立即通过boto将其上传到存储中。下载内容直接流式传输到 boto,以避免将文件存储在本地。我想添加一个中间步骤来加密流,在下载后但在上传之前加密流。
请注意,这是上传到支持流式上传的Google Cloud Storage。
import boto
import gcs_oauth2_boto_plugin
import requests
url = 'https://www.example.com/file.tar.gz'
r = requests.get(url, stream=True)
filename = 'file.tar.gz'
uri = boto.storage_uri(filename, 'gs')
uri.new_key().set_contents_from_stream(r.raw)
在将流传递到 set_contents_from_stream(( 之前,循环访问流并对其进行加密的最佳方法是什么?理想情况下,我将使用标准化的加密库,而不必自己实现任何加密代码。
python不提供
内置加密,但有您可以使用很多好的软件包。蟒蛇网站推荐 pycrypto http://www.pycrypto.org。 这是一个如何在应用程序中使用它的示例
import boto
import gcs_oauth2_boto_plugin
import requests
from Crypto.Cipher import DES
url = 'https://www.example.com/file.tar.gz'
r = requests.get(url, stream=True)
obj = DES.new("mysecretkey", DES.MODE_ECB)
encrypted_contents = obj.encrypt(r.raw)
filename = 'file.tar.gz'
uri = boto.storage_uri(filename, 'gs')
uri.new_key().set_contents_from_stream(encryped_contents)