我目前在一个 Android 应用程序中有一个过程,它使用签名证书检查几个 ZIP 文件与签名文件,就像这里演示的一样(http://docs.oracle.com/javase/tutorial/security/apisign/vstep4。 html )
但是,由于我的文件都是 200MB - 900MB,因此需要 11-25 分钟才能完成所有文件并进行验证。我们目前正在使用“SHA1withRSA”并希望升级以使用“SHA256withRSA”。但是,这需要更长的时间,因为它是一种更增强的加密。这个应用程序的 iOS 对应版本在大约 2 分钟内完成了相同 ZIP 文件的验证,所以我想知道如何加快这个过程?更改缓冲区大小或重做 While 循环不会产生任何结果。
我想知道是否有一种方法可以仅验证 zip 的一部分,而不是遍历整个文件。
public boolean verify(String dataFile, String signFile) throws Exception {
byte[] sign = readSignature(signFile);
Signature sg = Signature.getInstance("SHA1withRSA", "BC");
sg.initVerify(publicKey);
FileInputStream datafis = new FileInputStream(dataFile);
BufferedInputStream bufin = new BufferedInputStream(datafis);
byte[] buffer = new byte[2048];
int len;
while (bufin.available() !=0) {
len = bufin.read(buffer);
sg.update(buffer, 0, len);
}
bufin.close();
return sg.verify(sign);