好的,所以我已经在很多地方登记了,但仍然找不到答案。所以我想一片一片地验证一个文件,而不是把它全部装入内存中。我知道我可以使用缓冲器逐个更新签名,但这不是我想要的。我想缓冲部分数据,然后使用签名和证书来验证这部分数据,然后重复,直到整个文件被验证为止--我每次只将少量文件加载到内存中。如果我有一个1GB的文件,我无法有效地将它加载到内存中来签名/验证该文件。
发布于 2014-08-10 16:38:14
签名由散列操作(例如SHA-256)、填充方案(例如PSS)、单向函数(例如,RSA私钥的模幂)组成。
现在,散列总是覆盖整个数据量,并且不能被分割。哈希通常在Signature.update方法中进行计算,该方法已经提供了流支持。填充和单向函数在sign或verify方法中执行。
因此,仅使用这个构造,就不能对数据执行部分验证。
对数据进行部分核实的一种方法是:
现在,当读取数据时:
还有预告片。
发布于 2014-06-05 08:34:42
对于如何验证数字签名的文件,听起来有些困惑。
诀窍是,准确地说,文件本身没有签名。相反,表示文件的哈希值将被签名。应该使用沙二散列算法创建哈希值。
因此,涉及整个文件的唯一操作是为文件创建哈希值的过程。通常使用SHA-2变体之一。
因此,真正的问题是将SHA-2哈希计算为流操作。这才是你需要解决的真正问题。
有了文件的哈希值后,就需要执行验证数字签名的其他方面。--但他们中没有一个涉及整个档案。
https://stackoverflow.com/questions/24049885
复制相似问题