1

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

0 回答 0