Javascript Encrypted File Upload

时间:2015-09-01 22:20:48

标签: javascript html5 file encryption upload

Is there a way to use javascript or ajax to encrypt file uploads, if so can you give me an example or link to working example?

2 个答案:

答案 0 :(得分:6)

答案是肯定的,有一种方法可以使用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对象
    • SubtleCrypto对象使用.digest(…),然后crypto.subtle.encrypt(…)使用该密钥实际加密文件
    • 使用indexedDB.open(…)和朋友打开与数据库的连接并将加密文件放入其中。
  3. 使用.importKey(…)获取密钥并在其上的步骤#2中调用您的函数以使用它处理输入文件并使用indexedDB存储它。

答案 1 :(得分:0)

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

(这假设您要保护传输中的文件,而不是您尝试保护文件不受具有管理员权限的人员的影响)