私は現在、ここでデモされているような署名付き証明書を使用して、署名ファイルに対していくつかの ZIP ファイルをチェックする Android アプリのプロセスを持っています ( http://docs.oracle.com/javase/tutorial/security/apisign/vstep4. html )
ただし、私のファイルはすべて 200MB ~ 900MB であるため、すべてのファイルを調べて検証するには 11 ~ 25 分かかります。現在「SHA1withRSA」を使用しており、「SHA256withRSA」にアップグレードしたいと考えています。ただし、より高度な暗号化であるため、さらに時間がかかります。このアプリに対応する iOS は、同じ ZIP ファイルの検証を約 2 分で行うので、このプロセスを高速化するにはどうすればよいでしょうか? バッファー サイズを変更したり、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);