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?
答案 0 :(得分:6)
答案是肯定的,有一种方法可以使用javascript或ajax加密文件上传。您可以在浏览器中使用具有内置本机支持的标准Web API:使用标准File API和WebCrypto 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
(或任何名称)功能中:
.files[…]
获取输入文件。定义一个接受加密密钥的函数;在该职能范围内:
FileReader
对象,并使用例如.readAsArrayBuffer(…)
加载文件crypto.subtle
创建新的SubtleCrypto
对象SubtleCrypto
对象使用.digest(…)
,然后crypto.subtle.encrypt(…)
使用该密钥实际加密文件indexedDB.open(…)
和朋友打开与数据库的连接并将加密文件放入其中。.importKey(…)
获取密钥并在其上的步骤#2中调用您的函数以使用它处理输入文件并使用indexedDB
存储它。答案 1 :(得分:0)
使用HTTPS URL上传文件,浏览器会自动加密数据以便传输。
(这假设您要保护传输中的文件,而不是您尝试保护文件不受具有管理员权限的人员的影响)