Ciao....no, ancora nn ho risolto...

Il problema è sempre lo stesso: criptare e decriptare un psw.
Adesso sto usando questa classe:

codice:
import java.io.UnsupportedEncodingException;
import javax.crypto.*;
import javax.crypto.Cipher;
import java.security.*;
import javax.crypto.KeyGenerator;

public class CryptoStringUtil
{
    private Key key = null;

    public CryptoStringUtil(){
        initKey();
    }

    private void initKey(){
        // -------- creazione generatore di chiavi------------------------
        System.out.println("Creazione del generatore di chiavi");
        KeyGenerator gen = null;
        try {
            gen = KeyGenerator.getInstance("DES");
        }catch (NoSuchAlgorithmException e1) {
            System.out.println("Algoritmo non supportato in KeyGenerator");
            System.exit(1);
        }

        System.out.println("Generatore di chiavi creato.");

        // -------- generazione chiave ------------------------------------
        System.out.println("Generazione della chiave segreta");

        gen.init(new SecureRandom());
        Key k = gen.generateKey();

        System.out.println("Chiave generata: ");

        for (int i=0; i<k.getEncoded().length; i++)
            System.out.print("" + k.getEncoded()[i] + "\t");

        System.out.println("");
        this.key = k;
    }

    public Key getKey(){
        return key;
    }
    
    public String criptaPassword(String password, Key key) throws InvalidKeyException, IllegalBlockSizeException, BadPaddingException, UnsupportedEncodingException{

        // -------- creazione Cifratore -----------------
        System.out.println("Generazione del Cipher per l'algoritmo prescelto");
        Cipher des =  null;
        try {
            des = Cipher.getInstance("DES");
        }catch(Exception e){
            e.printStackTrace();
        }

        // -------- cifratura  ------------------------------------
        
        byte[] dataPsw = password.getBytes("utf-8");
        System.out.println("Messaggio in chiaro: ");
        for (int i=0; i<dataPsw.length; i++)
            System.out.print("" + dataPsw[i] + "\t");
        System.out.println("");

        
        // ----- inizializzazione per cifratura --------
        des.init(Cipher.ENCRYPT_MODE, key);
        System.out.println("Cipher inizializzato per cifratura");

        // -------- cifratura -------------------
        byte[] dataPsw_criptata = des.doFinal(dataPsw);
        String psw_criptata = new String(dataPsw_criptata);
	    System.out.println("");
        return psw_criptata;
    }


    public String decriptPassword(String password_criptata, Key key){

         // -------- creazione Cifratore -----------------
        System.out.println("Generazione del Cipher per l'algoritmo prescelto");
        Cipher des =  null;
        try {
            des = Cipher.getInstance("DES");
        }catch(Exception e){
            e.printStackTrace();
        }

        try{
	   // ----- inizializzazione per decifratura --------
        des.init(Cipher.DECRYPT_MODE, key);
        System.out.println("Cipher inizializzato per decifratura");

        // -------- decifratura ----------------
        byte[] newdata_psw = password_criptata.getBytes();
        byte[] dataPsw_decriptata = des.doFinal(newdata_psw);

	    System.out.println("Messaggio decifrato: ");

	    String psw_decriptata = new String(dataPsw_decriptata);
	    System.out.println("");
        return psw_decriptata;
	
        }catch (BadPaddingException e) {
            e.printStackTrace();
            System.out.println("Bad Padding");
        }catch (InvalidKeyException e) {
            e.printStackTrace();
            System.out.println("Chiave non valida");
        }catch (IllegalBlockSizeException e) {
            e.printStackTrace();
            System.out.println("Dimensione del blocco illegale");
        }
        return null;
  }
}
e mi lancia eccezione qui
codice:
des.doFinal(newdata_psw);
L'eccezione è la seguente:

codice:
javax.crypto.BadPaddingException: Given final block not properly padded
        at com.sun.crypto.provider.SunJCE_h.b(DashoA12275)
        at com.sun.crypto.provider.SunJCE_h.b(DashoA12275)
        at com.sun.crypto.provider.DESCipher.engineDoFinal(DashoA12275)
        at javax.crypto.Cipher.doFinal(DashoA12275)
       ...
Su internet ho trovato che può dipendere dal fatto che converto una stringa in un array di byte, ma non riesco a trovare una soluzione....come sempre!!!!!