1

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で同じ暗号化をテストしましたが、残念ながらパフォーマンスは向上しませんでした。

  1. なぜデスクトップと劇的に異なるのか、また、Samsung Galaxy s4 タブレットよりも強力ではないデバイス Huawei の方が暗号化時間が速い理由を教えてください。
  2. Android でコードのパフォーマンスを向上させる方法はありますか?

よろしくお願いいたします。

4

0 に答える 0