プロバイダー A を使用して AES 暗号化を使用するとします。プロバイダー B を使用して同じものを復号化できますか?
3 に答える
はい。ただし、アルゴリズム ( AES
) だけでなく、モードとパディング (例AES/ECB/PKCS5Padding
) も指定する必要があります。
JCA リファレンス ガイドには、次のように記載されています。
(Cipher オブジェクトの作成) モードまたはパディングが指定されていない場合、モードおよびパディング スキームのプロバイダー固有の既定値が使用されます。たとえば、SunJCE プロバイダは ECB をデフォルト モードとして使用し、PKCS5Padding を DES、DES-EDE、および Blowfish 暗号のデフォルト パディング スキームとして使用します。これは、SunJCE プロバイダの場合、
Cipher.getInstance("DES")
とCipher.getInstance("DES/ECB/PKCS5Padding")
が同等のステートメントであることを意味します。
のみを指定するAES
と、他のプロバイダーが別のデフォルトを実装している可能性があり、それは機能しません (たとえば、CBC で暗号化し、ECB で復号化します)。
はい、それは標準化されたアルゴリズムです。パディングや操作モードなどは、復号化できるように両方のプロバイダーで同じに設定する必要があります。
おそらく。AES の初期の頃には、多くのアルゴリズムが投げかけられていました。二匹の魚の亜種をサポートしていた 1 つのプログラムを思い出します。スタンダードになったのがラインダールです。最近では、特に明記しない限り、AES は実際には AES-Rijndael であると想定できます。Two Fish のような他の AES アルゴリズムを指定すると、問題が発生します。