【问题标题】:Is there an efficient way to generate an MD5 hash of a browser Array Buffer?有没有一种有效的方法来生成浏览器数组缓冲区的 MD5 哈希?
【发布时间】:2015-07-09 20:58:36
【问题描述】:

我正在研究一种将文件从 Web 应用程序上传到 API 的策略。 API 需要随文件一起发送的文件的 MD5 哈希。我相信这里的意图是他们将在他们身边生成一个 MD5 并比较两者,看看文件内容是否在没有任何丢失数据或更改的情况下发送到服务器。

我可以使用文件阅读器 API 生成 MD5 来读取 AsText 或 readAsBinaryData,然后通过 MD5 算法运行内容。

我的问题是其中许多是大小从 10mb 到 500mb 不等的专用映像文件。尝试将它们读取为二进制或文本需要几分钟,有时还会导致浏览器崩溃。

就读取而言,使用 readAsArrayBuffer 似乎性能更高,但我找不到生成 MD5 的策略,它不像使用 readAsText 那样占用资源。

那么,有没有一种从 Array Buffer 生成 MD5 的轻量级策略?也许真正的问题是,是否有更好的方法来验证文件是否已从客户端传输到服务器而不会中断?我无法控制 API,但可以提出更改建议。

【问题讨论】:

    标签: javascript md5 filereader arraybuffer


    【解决方案1】:

    1) CRC32 与 MD5 怎么样?

    2) SparkMD5 可以增量散列

    【讨论】:

    • 感谢您的提示。 CRC32 只是另一种散列算法吗? spark增量散列可能是我的选择。它似乎不会加快速度,但它会给我一些工具,不会让浏览器完全崩溃,并提供关于正在发生的事情的增量反馈。
    • 不要将 CRC 视为哈希函数。它不具备加密强度和抗冲突能力。但该算法非常适用于网络传输数据的完整性校验。
    • 再次感谢。我能够得到一个很好的设置与那个增量散列。我很幸运只需要在 Chrome 上支持这一点,所以我能够在网络工作者中运行所有哈希,现在它运行得尽可能流畅。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-02
    • 1970-01-01
    • 2019-10-29
    • 2022-01-20
    • 2021-01-31
    相关资源
    最近更新 更多