假设我使用提供商A使用AES加密,我可以使用提供商B解密吗?
答案 0 :(得分:2)
是的,但您不仅应指定算法(AES
),还应指定模式和填充(例如AES/ECB/PKCS5Padding
)。
(创建密码对象)如果未指定模式或填充,则使用模式和填充方案的特定于提供程序的缺省值。例如,SunJCE提供程序使用ECB作为默认模式,PKCS5Padding作为DES,DES-EDE和Blowfish密码的默认填充方案。这意味着在SunJCE提供商的情况下:
Cipher.getInstance("DES")
和Cipher.getInstance("DES/ECB/PKCS5Padding")
是等效的陈述。
如果您只指定AES
,则可能是其他提供商实施了不同的默认设置,但无效(例如,您将使用CBC加密并使用ECB解密)。
答案 1 :(得分:1)
是的,它是标准化的算法,填充和操作模式之类的东西需要在两个提供商上设置相同才能让你解密。
答案 2 :(得分:0)
可能。在早期,AES有许多算法被抛弃。我记得有一个程序支持这两种鱼类。成为标准的是Rijndael。这些天除非另有说明,否则您可以假设AES实际上是AES-Rijndael。如果它指定任何其他AES算法,如Two Fish,你将遇到麻烦。