【发布时间】:2012-05-11 09:38:22
【问题描述】:
我正在编写需要加密和解密文件的应用程序。我的问题是解密比加密慢大约 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 位密钥。
这是什么原因造成的?
【问题讨论】:
-
实际上更奇怪,因为 CBC 解密模式应该比加密更快(块的解密可以并行化)CBC Mode
-
分析应用程序以查看需要花费的时间。可能是低效的实施。或者,在您的应用程序中包含 Spongy Castle 提供程序并添加计时日志语句。与具有不同提供商(Sun/Oracle、Bouncy Castle 等)的桌面计算机上的相同代码进行比较
标签: android performance aes