Hvis du har brug for at kryptere små filer i Java , er det nok til at indlæse alle data i hukommelsen , kryptere det og skrive det ud igen. Men for større filer , der kan overstige størrelsen af computerens hukommelse, vil denne fremgangsmåde være alt for langsom. Du vil i stedet nødt til at passere data direkte i en strøm fra filen til den nyligt krypteret fil . Ting du skal
Netbeans
Vis Flere Instruktioner
1
Opret en tom tekstfil med navnet " Encrypter.java " og indsæt følgende indledende kode ind i det : < 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 {
public static void kryptere ( SecretKey nøgle, InputStream i , OutputStream out) {}
offentlige static void main ( String [] args ) { }}
Dette har to metoder : en main metode, der vil tage to argumenter - kildefilen og destinationsfilen - og en kryptere metode, der tager to vandløb og en krypteringsnøgle
2
Indsæt følgende indenfor parentes i den vigtigste metode : Hej
File INFILE . = new File ( args [ 0 ]) File outfile = new File ( args [1] ),
try { SecretKey key = KeyGenerator.getInstance ( " DES " ) generateKey (); . Encrypter.encrypt (nøgle , ny FileInputStream ( INFILE ) , nye FileOutputStream ( outfile ) );} catch ( FileNotFoundException e ) { } catch ( NoSuchAlgorithmException e ) { }
Dette skaber en hemmelig nøgle til data Encryption Standard ( DES) metode til kryptering og straks kalder kryptere metode , sammen med nøglen og en strøm til kilden og destination filer
3
Indsæt følgende 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øgle, paramSpec ),
ud = new CipherOutputStream ( ud c) int count = 0 , byte [ ] buffer = new byte [ 1024 ]
while ( (tæl = in.read ( buffer) ) > = 0 ) { out.write ( buffer , 0, count) ;} ud . tæt ( );} catch ( IOException e ) { } catch ( InvalidAlgorithmParameterException e ) { } catch ( InvalidKeyException e ) { } catch ( NoSuchAlgorithmException e ) { } catch ( NoSuchPaddingException e ) { }
Dette opstiller en initialiseringsvektor bruge til DES cipher . Data læses fra InputStream , krypteret og skrevet ud 1024 bytes ad gangen, så selv multi- gigabyte filer til at være effektivt krypteret uden at overbelaste hukommelsen.
4
Gem dit arbejde . Hvis du har brugt en Java Integrated Development Environment (IDE ), kan du kompilere ved at klikke på " Build " knappen. Ellers skal du køre følgende kommando i din kommandoprompt at kompilere det : Hej
javac Encrypter.java
5
For at kryptere en fil , skrive følgende kommando i en kommando prompt: .
java Krypter KILDETEKSTFIL destinationFile
Erstat " KILDETEKSTFIL " og " destinationFile " med de nødvendige filnavne