我如何用 Vanilla JS 且无需后端构建“Forever”文件上传器

发布: (2025年12月14日 GMT+8 06:35)
2 min read
原文: Dev.to

Source: Dev.to

动机

我已经厌倦了当前的文件分享现状:

  • WeTransfer:除非付费,否则只能上传 2 GB。
  • Google Drive:需要登录并会追踪你的身份。
  • Discord:大文件会被阻止。

我想要一种方式,能够在不付费租用服务器或泄露任何个人数据的前提下,永久地向朋友传输超大文件。

介绍 SimpleShare

SimpleShare 是一个仅在浏览器中运行的应用,它充当 分布式加密引擎,而不是传统的文件托管服务。

智能压缩

浏览器在文件离开你的电脑之前使用 CompressionStream API 对文件进行压缩,减小体积。

军规级加密

文件会被 AES‑256‑GCM 加密,转换成“数字噪声”,整个过程完全在客户端设备上完成。

原子切片

大文件(例如 10 GB)会被切分成 200 MB 的 “原子”,以便更容易处理。

账本

加密后的原子会通过公共 CORS 代理上传到 Catbox,这是一个永久文件托管服务。

密钥

网站会生成一个 12 位字符的代码(或一个魔法链接)。该代码包含定位你的原子所需的映射信息以及解密它们的密码。

实现细节

密钥派生示例(JavaScript)

async function deriveKeyFromPassword(password) {
    const enc = new TextEncoder();
    const keyMaterial = await window.crypto.subtle.importKey(
        "raw",
        enc.encode(password),
        { name: "PBKDF2" },
        false,
        ["deriveKey"]
    );
    return window.crypto.subtle.deriveKey(
        {
            name: "PBKDF2",
            salt: enc.encode("NeuralShareSalt"),
            iterations: 100000,
            hash: "SHA-256"
        },
        keyMaterial,
        { name: "AES-GCM", length: 256 },
        true,
        ["encrypt", "decrypt"]
    );
}

试一试

你可以在此处体验 SimpleShare:

Back to Blog

相关文章

阅读更多 »