Se è necessario crittografare i file di piccole dimensioni in Java , è sufficiente per caricare tutti i dati in memoria, cifrare e scrivere di nuovo fuori . Tuttavia, per i file di grandi dimensioni che possono superare la dimensione della memoria del computer , questo approccio sarà troppo lento . Sarà invece necessario passare i dati direttamente in un flusso dal file per il nuovo file criptato . Cose che ti serviranno
Netbeans
Mostra più istruzioni
1
creare un file di testo vuoto denominato " Encrypter.java " e incollare il seguente codice iniziale in esso :
importazione java.io.File ; java.io.FileInputStream importazione; java.io.FileNotFoundException importazione; java.io.FileOutputStream importazione; java.io.IOException importazione; java.io.InputStream importazione; importazione java . io.OutputStream ; java.security.InvalidAlgorithmParameterException importazione; java.security.InvalidKeyException importazione; java.security.NoSuchAlgorithmException importazione; java.security.spec.AlgorithmParameterSpec importazione; javax.crypto.Cipher importazione; javax.crypto.CipherOutputStream importazione; importazione javax . crypto.KeyGenerator ; javax.crypto.NoSuchPaddingException importazione; importazione javax.crypto.SecretKey ; importazione javax.crypto.spec.IvParameterSpec ;
class Encrypter pubblico {
public static void encrypt ( secretkey chiave , in InputStream , OutputStream out ) { }
public static void main (String [] args ) { } }
Questo ha due metodi : un metodo main che avrà due argomenti - il file sorgente e file di destinazione - e di un metodo di cifrare che prende due corsi d'acqua e una chiave di cifratura
2
Incollare il seguente all'interno delle parentesi del metodo main :
file inFile . = new File ( args [ 0 ] ) ; File outFile = new File ( args [ 1 ] ) ;
try { secretkey key = KeyGenerator.getInstance ( " DES " ) generateKey ( ) . Encrypter.encrypt ( chiave , new FileInputStream ( inFile ) , nuovo FileOutputStream ( outFile ) ) ; } catch ( FileNotFoundException e) { } catch ( NoSuchAlgorithmException e) { }
Questo crea una chiave segreta per il Data Encryption Standard ( DES ) metodo di crittografia e immediatamente chiamato il metodo Encrypt , insieme con la chiave e un flusso per il file di origine e di destinazione
3
incolla quanto segue nel metodo Encrypt : .
< p > try { byte [ ] iv = new byte [ ] { ( byte) 0x8E , 0x12 , 0x39 , ( byte) 0x9C , 0x07 , 0x72 , 0x6F , 0x5A } ;
AlgorithmParameterSpec paramSpec = new IvParameterSpec ( iv ) , Cipher c = Cipher.getInstance ( " DES/CBC/PKCS5Padding " ) ; c.init ( Cipher.ENCRYPT_MODE , chiave , paramSpec ) ;
out = new CipherOutputStream ( fuori , c); int count = 0 ; byte [ ] buffer = new byte [ 1024] ;
while ( (count = in.read (buffer ) ) > = 0 ) { out.write (buffer , 0 , count) ; } out . close () ; } catch ( IOException e) { } catch ( InvalidAlgorithmParameterException e) { } catch ( InvalidKeyException e) { } catch ( NoSuchAlgorithmException e) { } catch ( NoSuchPaddingException e) { }
Questo imposta un vettore di inizializzazione da utilizzare per la cifratura DES . I dati vengono letti dal InputStream , criptati e scritti 1024 byte alla volta , permettendo anche i file multi-gigabyte per essere efficiente criptato senza sovraccaricare la memoria .
4
Salvare il lavoro . Se si utilizza un ambiente di sviluppo integrato Java ( IDE ) , è possibile compilare cliccando sul pulsante "Build" . In caso contrario , è necessario eseguire il seguente comando nel prompt dei comandi per compilarlo :
javac Encrypter.java
5
Per crittografare un file, digitare il seguente comando in un comando prompt di : .
java Encrypt sourceFile destinationFile
Sostituire " sourceFile " e " destinationFile " con i nomi dei file necessari