【问题标题】:Javascript Encrypted File UploadJavascript加密文件上传
【发布时间】:2015-11-27 06:58:16
【问题描述】:

有没有办法使用 javascript 或 ajax 来加密文件上传,如果可以,你能给我一个例子或链接到工作示例吗?

【问题讨论】:

标签: javascript html file encryption upload


【解决方案1】:

答案是肯定的,有一种方法可以使用 javascript 或 ajax 来加密文件上传。您可以在浏览器中使用具有内置本机支持的标准 Web API:使用标准 File APIWebCrypto API 从文件系统中获取文件并实际加密它 - 以及 Indexed Database API (indexedDB)(如果需要)将加密文件存储在浏览器的客户端。 Upload a file, encrypt it, calculate the hash and store the results using indexedDB 是一个很好的简单示例代码。

如何做的简短总结

第一步只是在你的 HTML 中创建一个input type=file 元素的正常步骤,然后绑定一个函数来从你的文件系统中获取文件并对其进行处理;例如,使用onsubmit="my_file_handler"

之后,在您的 my_file_handler(或任何名称)函数中:

  1. 使用.files[…] 从中获取输入文件。
  2. 定义一个接受加密密钥的函数;在该函数中:

    • 创建一个新的FileReader 对象并使用例如.readAsArrayBuffer(…) 来加载文件
    • 使用crypto.subtle 创建一个新的SubtleCrypto 对象
    • 使用.digest(…)SubtleCrypto 对象,然后crypto.subtle.encrypt(…) 使用该密钥实际加密文件
    • 使用indexedDB.open(…) 和朋友打开与数据库的连接并将加密文件放入其中。
  3. 使用.importKey(…) 获取密钥并在步骤#2 中调用您的函数来处理输入文件并使用indexedDB 存储它。

【讨论】:

    【解决方案2】:

    使用HTTPS URL上传文件,浏览器会自动加密传输数据。

    (假设您想保护传输中的文件,而不是试图保护文件免受服务器上具有管理员权限的人的影响)

    【讨论】:

    • @user1503941 — 我请你参考这个答案的第二段,它说明了这一点。
    猜你喜欢
    • 2011-11-30
    • 1970-01-01
    • 2019-11-10
    • 1970-01-01
    • 1970-01-01
    • 2011-12-12
    • 1970-01-01
    • 2011-08-01
    相关资源
    最近更新 更多