Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1

    Creare zip protetti da password

    Salve ragazzi,

    avrei bisogno di realizzare una cosa del genere.

    Ho creato una applicazione che utilizza come database MYSQL.

    Ora vorrei fare l'export di questo db, in maniera tale da avere i dati salvati.

    Eseguo questa operazione da java attraverso mysqldump. In pratica tramite java richiamo il promt dei comandi windows e faccio eseguire questo export. Il comando mysqldump crea un file .sql con tutto il db. Ora vorrei che questo file fosse inserito in un file .zip o .rar

    Però protetto da password che ovviamente specificherei io.

    E' possibile?

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    dopo breve ricerca:

    http://code.google.com/p/winzipaes/

    apparentemente dal sito che lo linkava (un thread su stackoverflow) * si evince che la capacità di mettere una password è disponibile solo per archivi contenenti un unico file (ma in caso, zippi tutto senza password e poi re-zippi con questo, mettendo la password). Altrimenti se vuoi una soluzione "mista" (daltronde il dump lo fai con Process, interfacciandoti direttamente con mysql), guardati un po' le api di zip / rar: sicuramente ci sarà il mondo di materiale su come creare batch con le più svariate opzioni.

    * EDIT:
    ho scaricato la libreria e ci sto dando un'occhiata adesso... e non mi sembra che si parli di singolo file per archivio. Adesso faccio qualche prova.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  3. #3
    Ok ti ringrazio, per ora di pranzo inizio a smanettare anche io e vedere un attimo cosa si può fare

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    allora ti confermo che si possono inserire quanti file vuoi, magari quel post su stackoverflow era relativo ad una vecchia release.

    Ho fatto questo programmino di test:

    codice:
    package test;
    
    import de.idyl.winzipaes.impl.*;
    import de.idyl.winzipaes.*;
    import java.io.*;
    /**
     *
     * @author Andrea
     */
    public class Main {
        
        private static final String BASE_PATH = "C:/Users/Andrea/Desktop/zip/"; 
        private static final String OUTPUT = BASE_PATH + "passwordprotected.zip";
        private static final String[] INPUT_FILES = new String[] {
            BASE_PATH + "cover.pdf",
            BASE_PATH + "tim.docx",
            BASE_PATH + "stored_procedures.txt"
        };
        private static final String PASSWORD = "password";
        
        public static void main (String[] args) throws Exception {
            AESEncrypterJCA encrypter = new AESEncrypterJCA();
            encrypter.init(PASSWORD, 256);
            AesZipFileEncrypter zipFile = new AesZipFileEncrypter (OUTPUT, encrypter);
            File f;
            for (String s : INPUT_FILES) {
                f = new File(s);
                zipFile.add(f, f.getName(), PASSWORD);
            }
            zipFile.close();        
        }
        
    }
    e zippa tutto a meraviglia. Accortezza: vuole Bouncy Castle nel classpath (anche se poi come vedi io non lo uso, usando la standard JCA), però ho visto che le classi che usano BC sono state divise da quelle che usano la standard e quindi probabilmente te ne puoi sbarazzare.

    [EDIT]
    e ti confermo anche che rinominando / eliminando i file *BC.java nel package impl, non ti serve più Bouncy Castle nel path per farla andare.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  5. #5
    Ciao chiedo scusa per aver risposto soltanto adesso. Ma il lavoro certe volte ti ruba via molto tempo.

    Allora ho provato a fare come hai fatto tu, ma non riesco ancora a compilare senza errori il codice.


    L'errore che mi viene mostrato è questo

    codice:
    java.security.InvalidKeyException: Illegal key size or default parameters
    	at javax.crypto.Cipher.a(DashoA13*..)
    	at javax.crypto.Cipher.a(DashoA13*..)
    	at javax.crypto.Cipher.a(DashoA13*..)
    	at javax.crypto.Cipher.init(DashoA13*..)
    	at javax.crypto.Cipher.init(DashoA13*..)
    	at de.idyl.winzipaes.impl.AESUtilsJCA.<init>(AESUtilsJCA.java:67)
    	at de.idyl.winzipaes.impl.AESEncrypterJCA.init(AESEncrypterJCA.java:33)
    	at test.Main.main(Main.java:23)
    Exception in thread "main" java.lang.Error
    	at de.idyl.winzipaes.impl.AESUtilsJCA.<init>(AESUtilsJCA.java:83)
    	at de.idyl.winzipaes.impl.AESEncrypterJCA.init(AESEncrypterJCA.java:33)
    	at test.Main.main(Main.java:23)
    alla riga 23 del main c'è questa riga

    encrypter.init(PASSWORD, 256);

    ho provato a sostituirla da 256 a 128 ed il risultato è questo

    codice:
    java.security.InvalidKeyException: Illegal key size or default parameters
    	at javax.crypto.Cipher.a(DashoA13*..)
    	at javax.crypto.Cipher.a(DashoA13*..)
    	at javax.crypto.Cipher.a(DashoA13*..)
    	at javax.crypto.Cipher.init(DashoA13*..)
    	at javax.crypto.Cipher.init(DashoA13*..)
    	at de.idyl.winzipaes.impl.AESUtilsJCA.<init>(AESUtilsJCA.java:67)
    	at de.idyl.winzipaes.impl.AESEncrypterJCA.init(AESEncrypterJCA.java:33)
    	at de.idyl.winzipaes.AesZipFileEncrypter.add(AesZipFileEncrypter.java:177)
    	at de.idyl.winzipaes.AesZipFileEncrypter.add(AesZipFileEncrypter.java:147)
    	at test.Main.main(Main.java:28)
    Exception in thread "main" java.lang.Error
    	at de.idyl.winzipaes.impl.AESUtilsJCA.<init>(AESUtilsJCA.java:83)
    	at de.idyl.winzipaes.impl.AESEncrypterJCA.init(AESEncrypterJCA.java:33)
    	at de.idyl.winzipaes.AesZipFileEncrypter.add(AesZipFileEncrypter.java:177)
    	at de.idyl.winzipaes.AesZipFileEncrypter.add(AesZipFileEncrypter.java:147)
    	at test.Main.main(Main.java:28)
    alla riga 28 del mail c'è questo

    zipFile.add(f, f.getName(), PASSWORD);

    dove sbaglio?

  6. #6
    Allora, sono riuscito a risolvere il problema in parte.

    In pratica se metto come parametro di criptazione della password 256 o 192 non funziona nulla. Se invece inserisco 128 riesco a farlo zippare, e mi crea correttamente il file protetto con password.

    Apro il file zip vedo tutti i file, e provo ad estrarre il contrenuto. Accade che mi chiede la password e la inserisco, ma mi dice che è scorretta.

    Ora come posso risolvere???

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    non hai letto la documentazione sulla sicurezza: devi cambiare due jar dentro jre/lib/security e mettere al suo interno una nuova versione di questi due jar local_policy.jar US_export_policy.jar scaricabile dal sito oracle se cerchi "unrestricted policy file".
    RTFM Read That F*** Manual!!!

  8. #8
    Ok Va bene adesso cerco, però questo discorso non vale per quello che voglio fare io, ma è proprio una questione relativa a JAVA giusto??

    Quindi per intenderci il codice è corretto va solo cambiata qualche libreria di JAVA, è corretto?

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    si è una cosa riguardante le librerie di sicurezza e le leggi:

    By default, the JRE is restricted to particular encryption algorithms and limited encryption strength, or so-called "strong encryption." This restriction is put in place so that the JCE and applications that use it can be freely imported by other countries whose governments restrict the use of cryptography. These restrictions are not applicable in most countries, so the first step is to install the unlimited strength policy files..

    Ovviamente fallo per tutte le macchine che useranno il tuo programma
    RTFM Read That F*** Manual!!!

  10. #10
    Ah ok è questo non mi piace molto cmq va bene.

    Ascolta ho scaricato questi due file ma non riesco comunque a risolvere.

    Potresti magari inviarmi il link da dove poterli reperire?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.