2016-11-20 2 views
-2

J'utilise le code ci-dessous pour mettre en œuvre Triple DES avec le codage BCE et PKSC5 Padding.The clé secrète que j'utilise est stockée dans un fichier nommé clé dans folder.I premières am devient ci-dessous exception-Triple DES-encodage java.security.InvalidKeyException: taille de la clé doit être 128 ou 192 bits

java.security.InvalidKeyException: key size must be 128 or 192 bits 

Pourquoi ai-je cette exception et où vais-je tort?

public byte[] encrypt(String message) throws Exception { 

     getResources().getIdentifier("key", 
       "raw", getPackageName()); 
     byte[] bytes = new byte[1024]; 
     try { 
      BufferedInputStream buf = new BufferedInputStream(getResources().openRawResource(
        getResources().getIdentifier("key", 
          "raw", getPackageName()))); 
      buf.read(bytes, 0, bytes.length); 
      buf.close(); 
     } catch (FileNotFoundException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

     final SecretKey key = new SecretKeySpec(bytes, "DESede/ECB/PKCS5Padding"); 
     final Cipher cipher = Cipher.getInstance("DESede/ECB/PKCS5Padding"); 
     cipher.init(Cipher.ENCRYPT_MODE,key); 

     final byte[] plainTextBytes = message.getBytes("utf-8"); 
     final byte[] cipherText = cipher.doFinal(plainTextBytes); 

     return cipherText; 
    } 
+1

cette exception ne pouvait pas être rendue plus claire. –

+0

@JamesKPolk Je ne suis pas en mesure de chaîne secrète dans cryptogramme bcoz de exception..I ci-dessus ne comprennent pas exactement WHT u dire par « cette exception ne pourrait être plus clair. » – Bhuvi

+0

@Bhuvi Ne pas utiliser le mode BCE, il est peu sûr, voir [mode ECB] (https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#Electronic_Codebook_.28ECB.29), faites défiler vers le bas pour le pingouin. Au lieu d'utiliser le mode CBC avec un IV aléatoire, il suffit de préfixer les données cryptées avec l'IV pour l'utiliser dans le décryptage. 3DES ne devrait pas non plus être utilisé dans un nouveau travail. – zaph

Répondre

0

Vous avez transmis un tableau de longueur 1024 comme clé. La clé doit être de longueur 16 (128 bits) ou 24 (192 bits). 1024 n'est ni l'un ni l'autre de ces chiffres.

Si vous effectuez une superposition pour votre lecture, rognez le tableau à la taille appropriée après lecture.

+0

Une clé de 16 octets peut fonctionner ou non selon l'implémentation. Les clés 3DES sont de 24 octets, l'implémentation que l'OP utilise semble prendre 16 ou 24 octets avec une partie réutilisée pour la version de 16 octets. Remarque, les tailles de clé sont 56 bits, 112 bits ANSD 168 bits, le LSB de chaque octet est ignoré, il l'habitude d'être la parité. – zaph