2016-06-27 51 views
4

CCMを実行するのにJCEを使用できますか?Bouncycastle JCEプロバイダでAES CCMを使用する方法 - CCMParameters

私はJCE以外のバウンシークラスを使ってインターネット上で多くの例を見ています。特に、私は、CCMParametersオブジェクトを渡してinitを呼び出しているのを見ています。

このCCMParametersオブジェクトはAlgorthmParametersまたはAlgorithmParameterSpecから派生しないため、Cipher.getInstance( "AES/CCM")でCipherオブジェクトを取得した後に、Cipher.init()に渡す方法がないようです/ NoPadding "))。

どうすればよいですか?

答えて

0

こんにちは、AES-CCM algo のサンプルコードです。ここでは、通常の名前はすべて入力パラメータです。 HEXデータのバイトについての世話をし、他のすべてのもの

import org.bouncycastle.crypto.BlockCipher; 
import org.bouncycastle.crypto.InvalidCipherTextException; 
import org.bouncycastle.crypto.engines.AESEngine; 
import org.bouncycastle.crypto.modes.CCMBlockCipher; 
import org.bouncycastle.crypto.params.CCMParameters; 
import org.bouncycastle.crypto.params.KeyParameter; 
import org.bouncycastle.util.encoders.Hex; 

public class AesCcm { 
    public static void main(String[] args) throws IllegalStateException, InvalidCipherTextException { 
    int macSize = 125; 
    byte[] key = new byte[32]; 
    byte[] keybyte = "test123".getBytes(); 
    byte[] inputNouc = "abcd".getBytes(); 
    for (int I = 0; I < keybyte.length; I++) { 
     key[I] = keybyte[I]; 
    } 

//  Input data in HEX format 
    String input = "ed88fe7b95fa0ffa190b7ab33933fa"; 

    byte[] inputData= Hex.decode(input); 

    BlockCipher engine = new AESEngine(); 
    CCMParameters params = new CCMParameters(new KeyParameter(key), 
      macSize, inputNouc, null); 

    CCMBlockCipher cipher = new CCMBlockCipher(engine); 
    cipher.init(true, params); 
    byte[] outputText = new byte[cipher.getOutputSize(inputData.length)]; 
    int outputLen = cipher.processBytes(inputData, 0, inputData.length, 
      outputText , 0); 
    cipher.doFinal(outputText, outputLen); 

//  outputText and mac are in bytes 
    System.out.println(outputText); 
    System.out.println(cipher.getMac()); 
    } 
} 
+0

だからそれはいいですが、質問はJCE、いないはBouncyCastle独自のAPIを使用する方法についてでした。 – nsayer

+0

私はBCで働いていたので、私はJCEについて考えていません –

関連する問題