繁体   English   中英

如何在django上传之前加密文件

[英]how to encrypt a file before uploading in django

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

我正在遵循下面提到的这种方法。

https://ruddra.com/documentation-of-django-encrypt-file/#basic-usage

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

视图.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)

上传.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 %}

设置.py

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

要在上传到服务器之前加密文件,这意味着您需要在浏览器中对其进行加密 - 例如使用 JavaScript。 这是一个可以帮助您在 JS 中加密内容的线程: JavaScript AES 加密和解密(高级加密标准)

如果您愿意接受挑战,请考虑在 WASM 中运行 AES 以加速加密(对于大文件很重要)。

请注意,在 Django 中,所有 python 代码都在服务器上执行。 问题中的链接示例显示了如何在上传文件后加密服务器上的文件: https : //ruddra.com/documentation-of-django-encrypt-file/#basic-usage

请注意,在上传之前在浏览器上加密文件只是整个问题的一小部分。 要获得安全的文件共享服务,您可能希望有一种方法可以与需要解密密钥的其他用户共享密钥。 为此,您可能需要使用非对称加密,例如,在上传之前使用其他用户的公钥包装(加密)密钥。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM