如何在Web浏览器中进行即时客户端解密/加密文件传输?

时间:2013-01-11 13:28:07

标签: javascript html html5 encryption filesystems

  

轻松隐私过去,安全存储和传输   机密信息需要安装专用   软件。新的Mega透明地加密和解密您的数据   在您的浏览器中,即时。您按住存储的键   云,而不是我们。

此引用来自新的MegaUpload文件主机服务的website,该服务将于本月19日推出。

当然,作为一名网络开发人员,我对后面的技术感兴趣和好奇。

我所能找到的只是屏幕截图和声明,使其看起来真实,数据真的从未离开客户端未加密!

使用AES保护文件和传输。

每个客户端都获得一个非对称密钥对,我只能猜到原因,但我认为它将用于加密AES初始化向量和其他客户端要与之共享文件的密钥。

但我的问题是:

技术上如何拦截文件上传/下载?

我知道RSA和AES都有加密算法,这些算法在javascript中运行并且非常有效。

但唯一似乎支持在文件系统中运行的浏览器是chrome。

如何将数据从硬盘驱动器传输到客户端浏览器进行加密?它是如何从那里到达硬盘驱动器上的文件的?

我不知道文件系统API这样的事情。甚至html5也只支持某种对象存储。

我认为它对于某些浏览器插件或maby是java或adobe air applet非常微不足道,但是他们声称不会出现需要安装的第三方软件等事情。

还有其他办法吗?

1 个答案:

答案 0 :(得分:6)

  

技术上如何拦截文件上传/下载?

你没有拦截它。用户使用<input type="file">元素选择一个或多个文件,然后JavaScript读取文件输入的值并对其进行加密。上传可能是通过Ajax完成的。

  

但唯一似乎支持在文件系统中运行的浏览器是chrome。

Chrome是第一个实施filesystem API的用户,与file API不同。文件系统API管理沙盒文件系统(不是用户真正的操作系统文件系统);文件API从<input type="file">元素读取文件。在大多数现代浏览器中,文件API具有much broader support(但不是完美支持)。

对于加密和上传,JavaScript可以读取用户使用文件输入专门选择的文件,并通过Ajax将加密值发送到服务器。对于下载,浏览器可以执行资源的Ajax提取,解密并提示用户保存文件(例如,通过重定向到data: URI)。不需要以编程方式访问文件系统。