Si necesita cifrar archivos pequeños en Java , es suficiente para cargar todos los datos en la memoria, cifrar y volver a escribirlos . Sin embargo , para archivos más grandes que pueden superar el tamaño de la memoria del ordenador , este enfoque será demasiado lento. Usted en cambio necesita para pasar los datos directamente en una corriente del expediente al archivo recién cifrada. Cosas que necesitará
Netbeans
Ver Más instrucciones
1
Crear un archivo de texto en blanco denominado " Encrypter.java " y pegue el siguiente código inicial en él:
java.io.File importación; java.io.FileInputStream importación; java.io.FileNotFoundException importación; java.io.FileOutputStream importación; java.io.IOException importación; java.io.InputStream importación , importación java . io.OutputStream ; java.security.InvalidAlgorithmParameterException importación; java.security.InvalidKeyException importación; java.security.NoSuchAlgorithmException importación; java.security.spec.AlgorithmParameterSpec importación; javax.crypto.Cipher importación; javax.crypto.CipherOutputStream importación , importación javax . crypto.KeyGenerator ; javax.crypto.NoSuchPaddingException importación; javax.crypto.SecretKey importación , importación javax.crypto.spec.IvParameterSpec ;
Encrypter clase pública {
public static void encrypt ( SecretKey clave , en InputStream , OutputStream fuera) { }
void (String [] args públicas estáticas ) { } }
Esto tiene dos métodos: un método principal que tendrá dos argumentos - el archivo de origen y el archivo de destino - y un método de cifrado que tiene dos corrientes y de cifrado
2
Pega el siguiente dentro de los corchetes del método principal :
archivo
INFILE . = new archivo ( args [ 0 ] ) ; archivo OUTFILE = new archivo ( args [ 1 ] ) ;
try { SecretKey key = KeyGenerator.getInstance ( " DES ") GenerateKey ( ) . Encrypter.encrypt (clave , nuevo FileInputStream ( INFILE ) , nuevo FileOutputStream ( OUTFILE )); } catch ( FileNotFoundException e) { } catch ( NoSuchAlgorithmException e) { }
Esto crea una clave secreta para el cifrado de datos estándar (DES ) método de cifrado y de inmediato llama al método cifrar, junto con la clave y una corriente de los archivos de origen y de destino
3
Pega el siguiente en el método de cifrado : .
< 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 , llave, paramSpec ) ;
a = new CipherOutputStream ( a , c ), int count = 0 , byte [ ] buffer = nuevo octeto [1024 ] ;
while (( count = in.read ( buffer) ) > = 0 ) { out.write (buffer, 0 , count) ;} fuera . close () ; } catch ( IOException e) { } catch ( InvalidAlgorithmParameterException e) { } catch ( InvalidKeyException e) { } catch ( NoSuchAlgorithmException e) { } catch ( NoSuchPaddingException e) { }
Esto establece un vector de inicialización a utilizar para el algoritmo de cifrado DES . Los datos se leen desde el InputStream , encriptada y escrita a 1024 bytes a la vez, permitiendo que incluso los archivos de varios gigabytes para ser eficiente cifrado sin sobrecargar la memoria.
4
Guarde su trabajo . Si ha utilizado un entorno de desarrollo integrado Java ( IDE ) , puede compilar haciendo clic en el botón " Build " . De lo contrario, tendrá que ejecutar el siguiente comando en el símbolo del sistema para compilarlo :
javac Encrypter.java
5
Para cifrar un archivo, escriba el comando siguiente en un símbolo del del sistema: .
java Encrypt sourceFile destinationFile
Reemplazar " sourceFile " y " destinationFile " con los nombres de los archivos necesarios