Hvis du trenger å kryptere små filer i Java , er det nok til å laste alle data i minnet , kryptere det og skrive det ut igjen. Men for større filer som kan overstige størrelsen på datamaskinens minne , vil denne tilnærmingen være altfor treg . Du vil i stedet trenger å overføre data direkte i en strøm fra filen til den nylig kryptert fil. Du trenger
NetBeans
Vis flere instruksjoner
en
Opprett en tom tekstfil kalt " Encrypter.java " og lim inn følgende opprinnelige koden inn i det:
import java.io.File , import java.io.FileInputStream , import java.io.FileNotFoundException , import java.io.FileOutputStream , import java.io.IOException , import java.io.InputStream ; import java . io.OutputStream , import java.security.InvalidAlgorithmParameterException , import java.security.InvalidKeyException , import java.security.NoSuchAlgorithmException , import java.security.spec.AlgorithmParameterSpec , import javax.crypto.Cipher , import javax.crypto.CipherOutputStream ; import javax . crypto.KeyGenerator , import javax.crypto.NoSuchPaddingException , import javax.crypto.SecretKey , import javax.crypto.spec.IvParameterSpec ;
public class Encrypter {
public static void kryptere ( SecretKey nøkkel, InputStream inn, OutputStream ut) { }
public static void main ( String [] args ) { } }
p Dette har to metoder: en viktig metode som tar to argumenter - kildefilen og målfilen - og kryptere metode som tar to bekker og en krypteringsnøkkel
2
Lim inn følgende i parentes av den viktigste metoden : en
File iNFILE . = new File ( args [ 0 ] ) ; File utfil = new File ( args [ 1 ] ) ;
prøve { SecretKey key = KeyGenerator.getInstance ( " DES ") generateKey (); . Encrypter.encrypt (key , nye FileInputStream ( iNFILE ) , ny FileOutputStream ( utfil )); } catch ( FileNotFoundException e ) { } catch ( NoSuchAlgorithmException e ) { }
Dette skaper en hemmelig nøkkel for Data Encryption Standard ( DES ) metode for kryptering og umiddelbart kaller kryptere metoden , sammen med nøkkelen og en strøm for kilden og målet filer
3
Lim følgende inn i kryptere metode : .
< 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 , nøkkel, paramSpec ) ;
ut = new CipherOutputStream ( ut , c ) ; int count = 0 ; byte [ ] buffer = new byte [ 1024 ];
while ( ( teller = in.read (buffer ) ) > = 0 ) { out.write (buffer , 0 , teller) ; } ut . close () ;} catch ( IOException e ) { } catch ( InvalidAlgorithmParameterException e ) { } catch ( InvalidKeyException e ) { } catch ( NoSuchAlgorithmException e ) { } catch ( NoSuchPaddingException e ) { }
Dette setter opp en initialiseringsvektoren å bruke for DES chiffer . Data leses fra InputStream , kryptert og skrevet ut 1024 byte om gangen , slik at selv multi -gigabyte filene skal bli effektivt kryptert uten å overbelaste minnet.
4
Lagre arbeidet ditt. Hvis du brukte en Java Integrated Development Environment ( IDE ) , kan du kompilere ved å klikke på " Build "-knappen . Ellers må du kjøre følgende kommando i din kommando bedt om å kompilere den : en
javac Encrypter.java
5
For å kryptere en fil , skriv inn følgende kommando i en kommando melding: .
java Krypter sourceFile destinationFile
Erstatt " sourceFile " og " destinationFile " med filnavn som trengs