我目前在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);