Javascript加密文件上传

Age*_*man 4 javascript encryption upload html5 file

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

sid*_*ker 6

答案是肯定的,有一种方法可以使用javascript或ajax来加密文件上传.您可以使用在浏览器中具有内置本机支持的标准Web API:使用标准File APIWebCrypto API从文件系统获取文件并实际加密它 - 以及索引数据库API(indexedDB)(如果需要)将加密文件存储在浏览器的客户端.工作代码的一个很好的简单示例是上传文件,加密文件,计算哈希并使用indexedDB存储结果.

简要总结如何做到这一点

第一步是input type=file在HTML 中创建元素的正常步骤,并将函数绑定到它以从文件系统获取文件并使用它执行某些操作; 例如,使用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.