首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >缓冲数字签名/验证超大型文件

缓冲数字签名/验证超大型文件
EN

Stack Overflow用户
提问于 2014-06-05 00:43:31
回答 2查看 2.1K关注 0票数 0

好的,所以我已经在很多地方登记了,但仍然找不到答案。所以我想一片一片地验证一个文件,而不是把它全部装入内存中。我知道我可以使用缓冲器逐个更新签名,但这不是我想要的。我想缓冲部分数据,然后使用签名和证书来验证这部分数据,然后重复,直到整个文件被验证为止--我每次只将少量文件加载到内存中。如果我有一个1GB的文件,我无法有效地将它加载到内存中来签名/验证该文件。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-10 16:38:14

签名由散列操作(例如SHA-256)、填充方案(例如PSS)、单向函数(例如,RSA私钥的模幂)组成。

现在,散列总是覆盖整个数据量,并且不能被分割。哈希通常在Signature.update方法中进行计算,该方法已经提供了流支持。填充和单向函数在signverify方法中执行。

因此,仅使用这个构造,就不能对数据执行部分验证。

对数据进行部分核实的一种方法是:

  1. 创建一个新的结构,包含(SHA-256)对数据片段的散列;
  2. 用签名对上述结构进行签名,并将签名添加到结构中;
  3. 代替签名,将新结构添加到数据中。

现在,当读取数据时:

  1. 首先使用签名来读取和验证整个结构;
  2. 读取任何给定的片段,并根据结构中的散列进行验证。

还有预告片。

票数 1
EN

Stack Overflow用户

发布于 2014-06-05 08:34:42

对于如何验证数字签名的文件,听起来有些困惑。

诀窍是,准确地说,文件本身没有签名。相反,表示文件的哈希值将被签名。应该使用沙二散列算法创建哈希值。

因此,涉及整个文件的唯一操作是为文件创建哈希值的过程。通常使用SHA-2变体之一。

因此,真正的问题是将SHA-2哈希计算为流操作。这才是你需要解决的真正问题。

有了文件的哈希值后,就需要执行验证数字签名的其他方面。--但他们中没有一个涉及整个档案。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24049885

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档