我使用最新的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测试了相同的加密,不幸的是我们没有得到更好的性能。
- 您能否告诉我为什么它与台式机有如此巨大的不同,以及为什么在功能更弱的华为设备上的加密时间比三星 Galaxy s4 平板电脑上的更快?
- 如果有什么方法可以提高代码在 Android 上的性能?
非常感谢您的帮助!