我正在编写加密照片的应用程序,尽管它需要解密并在画廊中显示缩略图,如活动。然后,您当然可以单击并查看不同活动中的全尺寸图像。我正在使用带有 256 位密钥的 AES/CBC/PKCS7Padding 密码。我使用 PBEWithSHA256And256BitAES-CBC-BC 导出密码密钥并将其存储到内存中。然后所有需要进行加密/解密的线程都使用内存中的密钥来初始化 Cipher 对象。
所以这是我的问题。当我同时解密许多图像时(假设我需要显示画廊)并且在我尝试解密全尺寸图像之后,它非常慢。另一方面,如果我只解密一个图像(无论大小),然后去画廊然后解密全尺寸图像,它非常快。
我真的很困惑。
那么我做错了什么?也许 Bouncy Castle Crypto 库不是线程安全的?
更新:我发现这个问题与 JIT 有关。禁用 JIT 完全消除了任何处理速度差异。任何人都可以帮助理解如何优化代码以强制 JIT 在使用多线程解密照片以获得与开始时仅解密一张照片相同的速度时编译代码的正确部分?