Se você precisar criptografar arquivos pequenos em Java , é o suficiente para carregar todos os dados na memória, criptografá-lo e escrevê-lo de volta para fora . No entanto, para arquivos maiores que podem exceder o tamanho da memória do computador , esta abordagem será muito lento. Em vez disso você vai precisar passar dados diretamente em um córrego do arquivo para o arquivo recém- criptografada. Coisas que você precisa
Netbeans
Mostrar Mais instruções
1
Crie um arquivo de texto em branco com o nome " Encrypter.java " e cole o seguinte código inicial para ele:
importar java.io.File ; java.io.FileInputStream importação; java.io.FileNotFoundException importação; java.io.FileOutputStream importação; import java.io.IOException ; java.io.InputStream importação , importação java . io.OutputStream ; java.security.InvalidAlgorithmParameterException importação; java.security.InvalidKeyException importação; java.security.NoSuchAlgorithmException importação , importação java.security.spec.AlgorithmParameterSpec ; javax.crypto.Cipher importação; javax.crypto.CipherOutputStream importação; javax importação . crypto.KeyGenerator ; javax.crypto.NoSuchPaddingException importação; javax.crypto.SecretKey importação , importação javax.crypto.spec.IvParameterSpec ;
public class Encrypter {
criptografar public static void ( chave secreta chave, InputStream in , OutputStream out) {}
public static void main ( string [] args ) {}}
Este tem dois métodos: um método main que vai levar dois argumentos - o arquivo de arquivo de origem e destino - e um método de criptografar que leva dois córregos e uma chave de criptografia
2
cole o seguinte dentro dos colchetes do método principal :
arquivo inFile . = new File ( args [ 0]); Arquivo outFile = new File ( args [1 ]);
try { key = chave secreta KeyGenerator.getInstance ( " DES " ) GenerateKey (); . Encrypter.encrypt (key, new FileInputStream ( inFile ) , new FileOutputStream ( outFile ) );} catch ( FileNotFoundException e) {} catch ( NoSuchAlgorithmException e) {}
Isso cria uma chave secreta para o Data Encryption Standard (DES) método de criptografia e imediatamente chama o método de criptografar, juntamente com a chave e um fluxo para os arquivos de origem e de destino
3
cole o seguinte para o método de criptografar : .
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 , chave, 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) ;} fora . close () ; } catch (IOException e) {} catch ( InvalidAlgorithmParameterException e) {} catch ( InvalidKeyException e) {} catch ( NoSuchAlgorithmException e) {} catch ( NoSuchPaddingException e) {}
Isso configura um vetor de inicialização para usar para a cifra DES. Os dados são lidos a partir do InputStream , cifrado e escrito 1024 bytes de cada vez, permitindo que até mesmo arquivos de multi-gigabyte para ser eficientemente criptografada sem sobrecarregar a memória.
4
Salve seu trabalho. Se você usou um Java Ambiente de Desenvolvimento Integrado (IDE), você pode compilar , clicando no botão "Build" . Caso contrário, será necessário executar o seguinte comando no prompt de comando para compilá-lo :
javac Encrypter.java
5
Para criptografar um arquivo, digite o seguinte comando em um comando prompt:
java Criptografar sourceFile destinationfile
Substituir " sourceFile " e " destinationfile " com os nomes dos arquivos necessários
.