Als u kleine bestanden op Java versleutelen , is het voldoende om alle gegevens in het geheugen geladen , versleutelen en schrijf het weer uit . Voor grotere bestanden die de omvang van het computergeheugen overschrijden , zal deze aanpak veel te traag . Je zal in plaats daarvan moet rechtstreeks gegevens doorgeven in een stroom van het bestand naar de nieuw gecodeerde bestand . Wat je nodig hebt Netbeans Toon Meer Aanwijzingen 1 Maak een leeg tekstbestand met de naam " Encrypter.java " en plak de volgende initiële code erin : < br 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 { openbare statische nietige versleutelen ( SecretKey sleutel , Inputlijn in , OutputStream out ) { } public static void main ( String [ ] args ) { } } Dit heeft twee methoden: een belangrijke methode die twee argumenten zal nemen - het bronbestand en doelbestand - en een encrypt methode die twee stromen en een encryptiesleutel neemt 2 Plak volgende binnen de haakjes van de belangrijkste methode : file inFile . = new File ( args [ 0 ] ) ; File outFile = new File ( args [ 1 ] ) ; try { SecretKey key = KeyGenerator.getInstance ( " DES " ) generateKey ( ) ; . Encrypter.encrypt ( key , nieuwe FileInputStream ( inFile ) , nieuwe FileOutputStream ( outFile ) ) ; } catch ( FileNotFoundException e ) { } catch ( NoSuchAlgorithmException e ) { } Dit creëert een geheime sleutel voor de data Encryption Standard ( DES ) methode van encryptie en meteen roept de encrypt methode , samen met de sleutel en een stroom voor de bron en de bestemming bestanden 3 Plak het volgende in het versleutelen methode : . 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 , sleutel , paramSpec ) ; out = new CipherOutputStream ( out , c ) ; int count = 0 ; byte [ ] buffer = new byte [ 1024 ] ; terwijl ( ( tel = 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 ) { } Dit stelt een initialisatie vector te gebruiken voor de DES cipher . Gegevens worden gelezen van het InputStream , gecodeerd en geschreven uit 1024 bytes in een tijd , waardoor zelfs multi - gigabyte bestanden op efficiënte wijze worden versleuteld, zonder overbelasting van het geheugen . 4 Sla uw werk . Als u gebruikt een Java Integrated Development Environment ( IDE ) , kunt u samenstellen door te klikken op de " Build "-knop . Anders moet u het volgende commando in je command prompt om het te compileren : javac Encrypter.java 5 Om een bestand , het type coderen de volgende opdracht in een opdrachtregel prompt : . java versleutelen SourceFile destinationFile Vervang " bronbestand " en " destinationFile " met de bestandsnamen die nodig
|