【问题标题】:AES weird difference between encryption and decryption speedAES加密和解密速度之间的奇怪差异
【发布时间】: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


【解决方案1】:

在android中加解密可能需要时间(因为代码转换和可用资源少)。 JNI 是此类任务的首选。使用 openssl 例程进行加密和解密,并通过 JNI 接口在您的 java 代码中调用它们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-08
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 2013-07-06
    • 2011-10-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多