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 毫秒。但是突然之间,在三星 Galaxy 4 平板电脑(Android 5.0.1)上部署的相同代码需要 40 秒才能对同一文件进行相同的加密。我们试用了华为Acend G300(Android 2.3.6),仅需17秒。

我们还用Spongy Castle测试了相同的加密,不幸的是我们没有得到更好的性能。

  1. 您能否告诉我为什么它与台式机有如此巨大的不同,以及为什么在功能更弱的华为设备上的加密时间比三星 Galaxy s4 平板电脑上的更快?
  2. 如果有什么方法可以提高代码在 Android 上的性能?

非常感谢您的帮助!

4

0 回答 0