我使用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测试了相同的加密,遗憾的是我们没有获得更好的性能。
非常感谢您的帮助!