Wenn Sie kleine Dateien in Java verschlüsseln müssen, ist es genug, um alle Daten in den Speicher zu laden, verschlüsseln und schreiben Sie es wieder heraus. Doch für größere Dateien , die die Größe der Speicher des Computers überschreiten darf , wird dieser Ansatz viel zu langsam. Sie wird stattdessen müssen direkt passieren in einem Strom von der Datei in den neu verschlüsselten Datei . Things You
Netbeans
brauchen anzeigen Weitere Anweisungen
1
Erstellen Sie eine leere Textdatei mit dem Namen " Encrypter.java " und fügen Sie den folgenden ursprünglichen Code hinein:
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 encrypt ( SecretKey Schlüssel , InputStream in , OutputStream out) {}
public static void main (String [] args ) {}}
Dies hat zwei Methoden: eine main-Methode , die zwei Argumente nehmen wird - die Quelldatei und Zieldatei - und ein Verfahren verschlüsseln , die zwei Bäche und einen Schlüssel nimmt
2
Fügen Sie den folgenden in den Klammern der main-Methode :
Datei inFile . = new File ( args [0] ); Datei outFile = new File (args [1] );
try { SecretKey key = KeyGenerator.getInstance ( "DES" ) GenerateKey (); . Encrypter.encrypt (key , neue FileInputStream ( inFile ), neue FileOutputStream ( outFile ) ); } catch ( FileNotFoundException e) { } catch ( NoSuchAlgorithmException e) {}
Dies schafft einen geheimen Schlüssel für den Data Encryption Standard (DES) Methode der Verschlüsselung und ruft sofort die Encrypt-Methode , zusammen mit dem Schlüssel und einen Strom für die Quell-und Ziel -Dateien
3
Fügen Sie den folgenden in den Encrypt-Methode : .
< 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 , key, paramSpec );
out = new CipherOutputStream (out, 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) {}
Dies setzt ein Initialisierungsvektor für die dES-Verschlüsselung verwenden . Die Daten werden aus dem InputStream lesen , verschlüsselt und geschrieben aus 1024 Byte zu einem Zeitpunkt , so dass sogar Multi -Gigabyte- Dateien effizient verschlüsselt ohne Überlastung des Speichers.
4
Speichern Sie Ihre Arbeit . Wenn Sie einen Java Integrated Development Environment (IDE) verwendet , können Sie über die Schaltfläche " Erstellen "-Knopf zu kompilieren. Andernfalls müssen Sie den folgenden Befehl in Ihre Eingabeaufforderung ausführen , um es zu kompilieren:
javac Encrypter.java
5
Um eine Datei verschlüsseln , geben Sie den folgenden Befehl in einer Befehlszeile Aufforderung: .
java Encrypt sourceFile DestinationFile
Ersetzen " sourceFile " und " DestinationFile " mit den Dateinamen benötigt