Om du behöver kryptera små filer i Java , är det tillräckligt för att ladda alla data i minnet , kryptera det och skriva det igen . Men för större filer som kan överstiga storleken på datorns minne , kommer detta tillvägagångssätt vara alldeles för långsam . Du kommer istället att behöva skicka data direkt i en ström från filen till den nya krypterade filen . Saker du behöver
NetBeans
Visa fler instruktioner
1
Skapa en tom textfil med namnet " Encrypter.java " och klistra in följande inledande kod i den :
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 kryptera ( SecretKey nyckel , InputStream in , OutputStream ut ) { }
public void main ( String [] args ) { } }
Detta har två metoder : en huvudsaklig metod som tar två argument - källfilen och målfilen - och en kryptera metod som tar två strömmar och en krypteringsnyckel
2
Klistra in följande inom parentes i den huvudsakliga metoden :
File infile . = new File ( args [ 0 ] ) ; File outFile = new File ( args [ 1 ] ) ;
try { SecretKey key = KeyGenerator.getInstance ( " DES " ) generateKey ( ) ; . Encrypter.encrypt ( nyckel , nytt FileInputStream ( infil ) , nya FileOutputStream ( outFile ) ) ;} catch ( FileNotFoundException e ) { } catch ( NoSuchAlgorithmException e ) { }
Detta skapar en hemlig nyckel för Data Encryption Standard ( DES ) metod för kryptering och omedelbart kallar kryptera metoden , tillsammans med nyckeln och en ström för källan och filer destination
3
Klistra in följande i kryptera metoden : .
try { byte [ ] IV = new byte [ ] { ( byte ) 0x8E , 0x12 , 0x39 , ( byte ) 0x9C , 0x07 , 0x72 , 0x6F , 0x5A };
AlgorithmParameterSpec paramSpec = ny IvParameterSpec ( iv) ; Cipher c = Cipher.getInstance ( " DES/CBC/PKCS5Padding "); c.init ( Cipher.ENCRYPT_MODE , nyckel, paramSpec );
ut = new CipherOutputStream ( ut , c); int count = 0 , byte [ ] buffer = new byte [ 1024 ] ;
medan ( ( räkna = in.read ( buffert ) ) > = 0 ) { out.write ( buffert , 0 , count ) ; } ut . close ( ) ;} catch ( IOException e ) { } catch ( InvalidAlgorithmParameterException e ) { } catch ( InvalidKeyException e ) { } catch ( NoSuchAlgorithmException e ) { } catch ( NoSuchPaddingException e ) { }
Detta ställer upp en initieringsvektor att använda för DES chiffret . Data läses från InputStream , krypterade och skrivit ut 1024 byte i taget , så att även flera gigabyte filer vara effektivt krypterad utan att överbelasta minnet . Spara ditt arbete
4
. Om du använde en Java Integrated Development Environment ( IDE ) , kan du kompilera genom att klicka på " Build " -knappen . Annars måste du köra följande kommando i kommandotolken för att kompilera det :
javac Encrypter.java
5
vill kryptera en fil skriver du följande kommando i ett kommando prompt : .
java Kryptera KÄLLKODFIL DestinationFile
Ersätt " KÄLLKODFIL " och " DestinationFile " med de nödvändiga filnamn Addera