Android / Java验证大文件太慢

时间:2013-03-19 23:47:03

标签: android signature verify

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

0 个答案:

没有答案