Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在django中上载之前加密文件_Python_Django_Cryptography_Aes - Fatal编程技术网

Python 如何在django中上载之前加密文件

Python 如何在django中上载之前加密文件,python,django,cryptography,aes,Python,Django,Cryptography,Aes,我正在构建一个项目安全文件共享。该项目在上传到本地计算机之前对文件进行加密,如果用户拥有解密密钥,则在下载时进行解密。我被困在如何在上传到我的pc之前对文件进行加密 我遵循下面提到的方法 但我不知道如何与我的代码链接。有人能帮我吗 views.py def upload(request): context={} if request.method == 'POST': upload_file= request.FILES["document"

我正在构建一个项目安全文件共享。该项目在上传到本地计算机之前对文件进行加密,如果用户拥有解密密钥,则在下载时进行解密。我被困在如何在上传到我的pc之前对文件进行加密

我遵循下面提到的方法

但我不知道如何与我的代码链接。有人能帮我吗

views.py

def upload(request):
    context={}
    if request.method == 'POST':
        upload_file= request.FILES["document"]
        fs=FileSystemStorage()
        name=fs.save(upload_file.name, upload_file)
        context['url'] = fs.url(name)
    return render(request, 'accounts/upload.html',context)
upload.html

{% include 'accounts/main.html'%}

<pre>
Upload your files for sharing
</pre>


{% block content %}

  <form method="post" enctype="multipart/form-data">
    {% csrf_token %}
    <input type="file" name="document">
    <button type="submit">Upload</button>
  </form>
  {% if url %}

  <p> Uploaded file:<a href="{{ url }}">{{ url }}</a></p>
  {% endif %}

{% endblock %}

要在上传到服务器之前对文件进行加密,这意味着您需要在浏览器中对其进行加密,例如使用JavaScript。这里有一个线程可以帮助您在JS中加密内容:

如果您觉得能够应对这一挑战,可以考虑在WASM中运行AES以加快加密速度(对于大型文件很重要)

注意,在Django中,所有python代码都在服务器上执行。问题中的链接示例显示了上传文件后如何加密服务器上的文件:

请注意,在上载文件之前,在浏览器上对其进行加密仅占文件的一小部分。要获得安全的文件共享服务,您可能需要一种与需要解密密钥的其他用户共享密钥的方法。为此,您可能需要使用非对称加密,例如,在上载密钥之前,使用其他用户的公钥包装(加密)密钥

MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL= '/media/'