下载期间的 Javascript 解密

标签 javascript encryption proxy download

我正在构建一个 ASPX 网站,该网站应允许用户下载 CSV/Excel 文件(包括“保存到”对话框)。 CSV 包含加密数据 - 解密 key 在用户端可用,并且应对 Web 服务保密。 因此解密实际上应该在浏览器中执行,JavaScript 实现(sjcl)已被证明可以正常工作。 但是文件下载期间传入的数据流会受到怎样的影响呢?像浏览器托管代理执行 JavaScript 解密之类的东西?

@closure:非常感谢! Ajax没问题,思路

<a href='data:application/csv;base64,aGVsbG87d29ybGQNCg=='>click</a>

确实很酷,但它有两个问题:它似乎不适用于 IE,而且对于非常大的表来说,它不是正确的方法。该解决方案应该能够处理数千条记录,因此我们需要某种下载流编码器/解密器。

最佳答案

以下是实现此目标的步骤:

  1. 不要将 CSV 直接下载到客户端计算机,而是通过 ajax 获取
  2. 通过 Ajax 接收数据后,通过互联网上的许多可用函数解析 CSV。如果您需要这方面的帮助,请告诉我。此函数会将 CSV 转换为 native Javascript 数组。
  3. 遍历数组并将加密数据转换为未加密数据。在同一个数组中本地执行此操作。
  4. 将数组转换为 CSV(同样有公共(public)领域的函数)
  5. 创建链接(元素)并将 href 设置为本地数据,例如 data:text/csv;charset=utf-8, +encodeURIComponent(csv)
  6. 向用户提供此链接并要求他点击该链接以在本地保存文件。

关于下载期间的 Javascript 解密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14004986/

相关文章:

javascript - OpenLayers 中特征属性的深度克隆

javascript - 显示无不工作

javascript - document.getElementById().setAttribute() 函数的替代方法

c++ - 使用 FIPS 验证库和 AES 时的 CryptoPP::selfTestFailure

encryption - 编码、压缩

objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts

apache - 如何使用 .htaccess 禁用代理缓存

ubuntu - 如何使用 ansible 打开 SSH 隧道?

javascript - 如何将对象从 HTML href 链接传递给 javascript 函数?

node.js - 如何导出 IV 和 key 到 crypto.createCipheriv 进行解密?