我必须验证可能大至 2Gb 的文件上的签名,并且我希望以尽可能节省内存的方式来执行此操作。由于各种原因,该文件已经完全加载到内存中,并由应用程序使用 InputStream
进行访问。我想使用流接口(interface)验证签名,但 JCA Signature
类的 update
方法仅接受 byte[]
和相关类。
我怎样才能有效地做到这一点?我不想将这头野兽加载到第二个字节数组中,否则我们会看到内存使用量非常高,但接口(interface)似乎不支持它。
更新
如果重要的话,签名算法是 SHA-1
最佳答案
为什么不一次读取输入流一个 block (4096 字节或任何方便的大小),为每个 block 调用 update() 。
关于java - 使用 JCA 高效检查大型数据集的签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/407990/