2011-07-27 3 views
1

私のコードのバグに悩まされていますが、正しく復号化できません! 私は8バイトのデータをdataBytesに渡しています。私は の24バイトのキーをkeyBytesに渡しています。 復号化されたデータをバイトの配列として返そうとしています。 不良パディング例外が発生し続けます。デコードを使用した復号化のバグ

ありがとうございます!ここで

は、コードスニペットです:あなたが暗号化するために行ったよう

private static byte[] DESEdeDecrypt(byte[] keyBytes, byte[] dataBytes){ 

    byte[] decryptedData = null; 
    try{ 
     DESedeKeySpec keySpec = new DESedeKeySpec(keyBytes, 0); 
     SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DESede"); 
     SecretKey key = keyFactory.generateSecret(keySpec); 
     Cipher cipher = Cipher.getInstance("DESede"); 
     cipher.init(Cipher.DECRYPT_MODE, key); 
     decryptedData = cipher.doFinal(dataBytes); 
    } 
    catch(Exception e){System.out.println(e);} 

    return decryptedData; 
+0

反対側のパッドを指定していない場合は、「DESede/ECB/NoPadding」を使用してください... –

答えて

1

あなたは、復号化に同じパディングを使用する必要があります。デフォルトに頼るのではなく、明示的に設定する方が良いです。ベストはまた、両方のモードを指定することだけでなく終了:

Cipher cipher = Cipher.getInstance("DESede/CBC/PKCS5Padding"); 

DESEDEが遅いと陳腐です。古いコードとの互換性以外は使用しないでください。新しい仕事のためには、AESを使う方が良いです。

+0

+1のAES提案 – Qwerky

関連する問題