有没有一种有效的方法来生成浏览器数组缓冲区的 MD5 哈希值?

Is there an efficient way to generate an MD5 hash of a browser Array Buffer?

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

我可以通过使用文件 reader API readAsText 或 readAsBinaryData 生成 MD5,然后 运行 通过 MD5 算法生成内容。

我的问题是,其中许多是专门的图像文件,大小从 10mb 到 500mb 不等。尝试以二进制或文本形式读取这些内容需要几分钟时间,有时甚至会使浏览器崩溃。

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

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

1) CRC32 与 MD5 相比如何?

2) SparkMD5 可以增量哈希