Bouncy Castleの最新ソースを使用して、Serpent GCM 暗号化を実装しました。
public byte[] encrypt(byte[] key, byte[] iv, byte[] pt, byte[] aad,
int tagLength) throws InvalidCipherTextException {
GCMBlockCipher c = new GCMBlockCipher(new SerpentEngine());
c.init(true,
new AEADParameters(new KeyParameter(key), tagLength, iv, aad));
int outsize = c.getOutputSize(pt.length);
byte[] out = new byte[outsize];
int len = c.processBytes(pt, 0, pt.length, out, 0);
c.doFinal(out, len);
return out;
}
私のデスクトップ マシン (Windows Core i7) で完全に動作します。5Mb のファイルを暗号化するには、約 190 ミリ秒かかります。しかし、突然、Samsung Galaxy 4 タブレット (Android 5.0.1) に展開された同じコードが、同じファイルの同じ暗号化を行うのに 40 秒かかりました。Huawei Acend G300 (Android 2.3.6) を試したところ、わずか 17 秒しかかかりませんでした。
また、 Spongy Castleで同じ暗号化をテストしましたが、残念ながらパフォーマンスは向上しませんでした。
- なぜデスクトップと劇的に異なるのか、また、Samsung Galaxy s4 タブレットよりも強力ではないデバイス Huawei の方が暗号化時間が速い理由を教えてください。
- Android でコードのパフォーマンスを向上させる方法はありますか?
よろしくお願いいたします。