2016-05-25 3 views
2

のJava 7でAES/GCM/NoPaddingをサポートする暗号化を実行しようとしています。AES/GCM/NoPaddingをサポートするプロバイダが見つかりません

は以下の通りです暗号インスタンスを生成するためのAES/GCM/NoPadding

コードサンプルをサポートしているすべてのプロバイダを見つけることができません。

SecretKeySpec eks = new SecretKeySpec(k, "AES"); 
Cipher c = Cipher.getInstance("AES/GCM/NoPadding"); 
c.init(Cipher.ENCRYPT_MODE, eks, new GCMParameterSpec(128, iv)); 

答えて

7

この暗号化は、Java 7 SE(exception for Solaris)によってサポートされていません。

public static void main(String[] args) throws Exception { 
    for (Provider provider : Security.getProviders()) { 
     for (Map.Entry<Object, Object> entry : provider.entrySet()) { 
      if (((String) entry.getValue()).contains("GCM")) { 
       System.out.printf("key: [%s] value: [%s]%n", 
        entry.getKey(), 
        entry.getValue()); 
      } 
     } 
    } 
} 

あなたは、その場合のサービスプロバイダとしてBouncy Castleを見ているかもしれません。 BouncyCastleを使用するための

小さなスニペット。 http://www.bouncycastle.org/latest_releases.html

  • から

    1. ダウンロードbcprov-jdk15on-154.jarは、あなたのコード内でのサービスプロバイダを登録

      、あなたが(PARAMTER "BC"は、サービスプロバイダとしてバウンス城を使用するように指定すると暗号を使用することができます ​​
    2. 同じ暗号化のための他のプロバイダ)

      Cipher c = Cipher.getInstance("AES/GCM/NOPADDING", "BC"); 
      
    3. が存在しない場合、省略することができます

    のJava 8のサポート

    Cipher c = Cipher.getInstance("AES/GCM/NOPADDING"); 
    
  • +0

    おかげで、この情報のためにたくさんの箱のうち暗号は、本当に感謝、あなたはどのようにバウンティ城とAES/GCM /パディングを使用するために、任意のサンプルコードを持っています。 – RE350

    +0

    はRE350 @私は私の答えに必要な行を追加しました。あなたがする必要がある主なことは、新しいサービスプロバイダを登録することです。 – SubOptimal

    関連する問題