2017-06-13 7 views
0

暗号化中に以下のコードの例外が発生しました。 作成されたキーは "[B @ 29ee9faa"です。 "暗号化中にエラーが発生しました:java.security.InvalidKeyException:無効なAESキーの長さ:11バイト"暗号化中にエラーが発生しました:java.security.InvalidKeyException:無効なAESキーの長さ:11バイト

また、jre/lib/securityのlocal_policyおよびUs_export_policyもすでに更新されています。

public static String generateKey(String eisId) 
    { 
    String uuidKey = null; 
    try { 

     KeyGenerator gen = KeyGenerator.getInstance("AES"); 
     gen.init(128); /* 128-bit AES */ 
     SecretKey secret = gen.generateKey(); 
     uuidKey = secret.getEncoded().toString(); 
     System.out.println("uuidKey : "+uuidKey); 

     // Store in DB 
     // ********************** 

    } catch (NoSuchAlgorithmException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

    return uuidKey; 
} 

public static SealedObject encryptData(String eisId, SecurityDomainDTO sDObj) 
{ 
    try 
    { 
     String secret = generateKey(eisId); 
     SecretKeySpec aesKey = new SecretKeySpec(secret.getBytes(), "AES"); 
     Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); 
     cipher.init(Cipher.ENCRYPT_MODE, aesKey); 
     SealedObject so = new SealedObject(sDObj, cipher); 

     return so; 
    } 
    catch (Exception e) 
    { 
     System.out.println("Error while encrypting: " + e.toString()); 
    } 
    return null; 
} 
+0

'toString()'はそのようには動作せず、とにかくbyte []をStringに変換するのは無意味です。 –

答えて

0

「[B @ 29ee9faa」という文字列は大きなヒントです。それはbyte[]toString()と呼んだときに得られるものです。バイト配列の内容を表すものではありません。むしろ、それは内部型名( "[B")とオブジェクトのアイデンティティハッシュコードをrepresntsします。

これは誤りである:

 uuidKey = secret.getEncoded().toString(); 

バイト配列の内容をフォーマットするための正しい方法ではないことを。

Base64クラスを使用することをお勧めします。例えば

Base64.Encoder encoder = Base64.getEncoder(); 
    String encoded = encoder.encode(bytes); 

    ... 

    Base64.Decoder decoder = Base64.getDecoder(); 
    byte[] bytes = decoder.decode(encoded); 
+0

これで、java.security.InvalidKeyExceptionが返されました:パラメータがありません " –

+0

**デコード**について私が言ったことについて考えることをお勧めします。それが助けにならない場合は、更新されたコードで新しい質問をしてください –

+0

確かに、これは別の質問でなければならないと思います。 –

関連する問題