gpt4 book ai didi

file - 如何使用 NaCl 对大文件进行签名?

转载 作者:IT王子 更新时间:2023-10-29 01:40:31 50 4
gpt4 key购买 nike

鉴于 Go NaCl 库 ( https://github.com/golang/crypto/tree/master/nacl/sign ) 的签名功能,如何对文件进行签名,尤其是超过 1GB 的超大文件?大多数互联网搜索结果都是关于对 slice 或小字节数组进行签名的。

我可以想到两种方法:

  1. 以 block 的方式循环文件和流(例如每次 16k),然后将其输入符号函数。流式输出连接成签名证书。为了验证,它是相反的。
  2. 使用 SHA(X) 生成文件的 shasum,然后对 shasum 输出进行签名。

最佳答案

对于非常大的文件(数 GB 及以上),使用标准签名功能的问题通常是运行时和脆弱性。对于非常大的文件(或只是慢速磁盘),从头到尾连续读取整个文件可能需要数小时或更长时间。

在这种情况下,您需要一种并行处理文件的方法。一种适用于加密签名的常见方法是 Merkle 树哈希。它们允许您将大文件拆分成较小的 block ,并行散列它们(生成“叶散列”),然后进一步散列树结构中的这些散列以生成代表完整文件的根散列。

一旦你计算出这个 Merkle 树根哈希,你就可以签署这个根哈希。然后可以使用签名的 Merkle 树根哈希并行验证所有文件 block ,以及验证它们的顺序(基于树结构中叶哈希的位置)。

关于file - 如何使用 NaCl 对大文件进行签名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55554802/

50 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com