la viper | Je suis en train de faire mumuse avec une servlet qui permet de crypter/décrypter en 3DES à la volée ..
tout fonctionne impec .. sauuuf, qu'un mystère subsiste.
mes fonctions suivantes me font toujours disparaître les 8 derniers octets de mon stream ??
encode :
Code :
- public byte[] perform(byte[] code, String key) throws InvalidKeyException, IOException {
- //byte[] cle = key.getBytes();
- byte[] cle = (new String("ma clé sur 24 caractères" )).getBytes(); // 24 caractères
- generateKey(cle);
- c.init(Cipher.ENCRYPT_MODE, this.key);
- ByteArrayOutputStream os = new ByteArrayOutputStream();
- CipherOutputStream output = new CipherOutputStream(os,c);
- output.write(code);
- output.flush();
- System.out.println("encode:avant, code:"+code.length+" octets,"+code);
- code = os.toByteArray();
- System.out.println("encode:après, code:"+code.length+" octets,"+code);
- output.close();
- os.close();
- return code;
- }
|
décode :
Code :
- public byte[] perform(byte[] code, String key) throws InvalidKeyException, IOException {
- // byte[] cle = key.getBytes();
- byte[] cle = (new String("ma clé sur 24 caractères" )).getBytes(); // 24 caractères
- generateKey(cle);
- c.init(Cipher.DECRYPT_MODE, this.key);
- ByteArrayInputStream is = new ByteArrayInputStream(code);
- CipherInputStream input = new CipherInputStream(is,c);
- int read=0;
- int pos=0;
- int taille = code.length;
- input.skip(taille);
- System.out.println("decode:avant, code:"+code.length+" octets,"+code);
- while((read=input.read()) > 0) {
- code[pos]=(byte)read;
- pos++;
- }
- System.out.println("decode:apres, code:"+code.length+" octets,"+code);
- is.close();
- return code;
- }
|
Si quelqu'un a déjà rencontrer ce problème ...  |