我有一个单元测试在 Java 8+ 中通过并在 Java 7 上失败,因为 Java 7 和更早版本似乎不支持 GCM 模式。
我知道我可以尝试使用例如AES/GCM/PKCS5Padding
和 catch的转换来创建密码NoSuchAlgorithmException
,但是该异常可能仅针对该特定转换而引发,而不仅仅是因为不支持 GCM 模式本身(在任何转换中)。
我也可以只检查 JVM 版本,但这对于正在使用 3rd 方加密库(例如 BouncyCastle)的环境或具有来自另一个供应商的内置支持的 JVM 的环境来说不是有效的检查包括对 GCM 的支持。
我宁愿只在不支持 GCM 的情况下跳过测试,而不仅仅是在不支持我在代码中选择的特定(和完整)转换的情况下。
是否可以从 Java 中检测支持的密码块模式?还是只能尝试特定的转换并查看它是否有效?