AES加密和解密速度之间的奇怪区别

时间:2012-05-01 21:47:17

标签: android performance aes

我正在编写需要加密和解密文件的应用程序。我的问题是解密比加密慢大约5倍。我已经剥离了所有文件读/写操作并仅对加密进程进行了基准测试。结果非常令人惊讶:

使用encryptionCipher.doFinal()(javax.crypto.Cipher的实例)加密1.5 MB字节数组

~1600 ms

使用decryptionCipher.doFinal()(javax.crypto.Cipher的实例)解密1.5 MB字节数组

~5800 ms

我很惊讶,因为我知道AES解密和加密是对称过程,加密和解密速度应该没有区别。

我正在使用AES/CBC/PKCS7Padding密码和256位密钥。

导致这种情况的原因是什么?

1 个答案:

答案 0 :(得分:0)

加密和解密在Android中可能需要一些时间(因为代码转换和可用资源较少)。对于像这样的任务,JNI是首选。使用openssl例程通过JNI接口加密和解密并在java代码中调用它们。