2013-03-20 18 views
0

假設我使用提供商A的AES加密,我可以使用提供商B解密相同嗎?不同提供商的加密和解密

+2

你試過了嗎? – 2013-03-20 02:38:33

+3

是的,除非他們中的一個或兩個都是越野車。 – BevynQ 2013-03-20 02:43:03

+4

是的,假設您使用相同的密鑰,IV和塊鏈模式。 – Patashu 2013-03-20 02:44:21

回答

1

是的,它是標準化的算法,像填充和操作模式這樣的東西需要在兩個提供者上相同,以便您能夠解密。

0

也許吧。 AES在其早期推出了許多算法。我記得有一個程序支持這兩種魚的變體。成爲標準的是Rijndael。現在除非另有說明,否則可以假設AES實際上是AES-Rijndael。如果它指定了其他任何AES算法,如Two Fish,則會遇到麻煩。

2

是的,但您不僅應該指定算法(AES),還應該指定模式和填充(例如AES/ECB/PKCS5Padding)。

JCA Reference Guide說:

(創建密碼對象)如果沒有指定模式或填充,則使用用於模式和填充方案提供者特定的默認值。例如,SunJCE提供程序使用ECB作爲默認模式,並使用PKCS5Padding作爲DES,DES-EDE和Blowfish密碼的默認填充方案。這意味着在SunJCE提供商的情況下: Cipher.getInstance("DES")Cipher.getInstance("DES/ECB/PKCS5Padding")是等效語句。

如果只指定AES,它可能是其他供應商實現了一個不同的默認的情況下,這將無法正常工作(例如,您將與CBC加密與解密ECB)。