Red de conocimiento informático - Conocimiento del nombre de dominio - Cómo descifrar archivos de clase JAVA cifrados

Cómo descifrar archivos de clase JAVA cifrados

import java.io.RandomAccessFile;

clase pública FileEncryptAndDecrypt {

/**

* El archivo está cifrado

* @param fileUrl ruta del archivo

* @param clave contraseña

* @throws Exception

*/

public cifrado vacío estático (String fileUrl, String key) arroja una excepción {

Archivo archivo = nuevo Archivo (fileUrl);

Ruta de cadena = file.substring(0, index) "\" " abc";

Archivo destino = nuevo Archivo(destFile);

InputStream in = nuevo FileInputStream(fileUrl

OutputStream out = nuevo FileOutputStream(destFile); )

byte[] buffer = nuevo byte[1024]

int

byte[] buffer2=nuevo byte[1024]; p >

while (( r= in.read(buffer)) gt; 0) {

for(int i=0; ilt; r; i)

{

byte b=búfer[i];

búfer2[i]=b==255?0: b; > out.write(buffer2, 0, r);

out.flush();

}

in.close();

out.close();

file.delete();

dest.renameTo(new File(fileUrl));

appendMethodA( fileUrl). , clave);

System.out.println("Cifrado correctamente"

}

/**

*<); /p> p>

* @param fileName

* @param content key

*/

public static void appendMethodA(String fileName, String content ) {

prueba {

// Abre una secuencia de archivos de acceso aleatorio para lectura y escritura

RandomAccessFile randomFile = new RandomAccessFile(fileName, "rw");

// Longitud del archivo en bytes

long fileLength = randomFile.length(

);

// Mueve el puntero de escritura del archivo al final del archivo.

randomFile.seek(fileLength);

randomFile.writeBytes(contenido);

randomFile.close()

} captura; (IOException e) {

e.printStackTrace();

}

}

/**

* Descifrado

* @param fileUrl archivo fuente

* @param tempUrl archivo temporal

* @param ketLength longitud de la contraseña

* @return

* @throws Exception

*/

public static String decrypt(String fileUrl, String tempUrl, int keyLength) lanza una excepción {

Archivo archivo = nuevo Archivo(fileUrl);

if (! archivo.

existe()) {

return null;

}

Archivo destino = nuevo Archivo(tempUrl);

if (!dest .getParentFile().exists()) {

dest.getParentFile().mkdirs();

}

InputStream es = new FileInputStream(fileUrl) ;

OutputStream out = new FileOutputStream(tempUrl);

byte[] buffer = nuevo byte[1024];

byte[] buffer2 = nuevo byte[ 1024];

byte bMax = (byte)255;

tamaño largo = file.length() - keyLength;

int mod = (int) ( tamaño1024);

int div = (int) (tamañogt; gt; 10);

int recuento = mod==0?div: (div 1);

int k = 1, r;

while ((k lt; = contar amp; amp; ( r = is.read(buffer) ) gt; 0)) {

if(mod != 0 amp; amp; k==count) {

r = mod

}

for(int i = 0 ;i lt; r;i )

{

byte b=buffer[i];

buffer2[i]=b==0?bMax: --b;

}

out.write(buffer2, 0, r

k

}

out.close();

es.close();

return tempUrl

}

/* *

* Determinar si el archivo está cifrado

* @param fileName

* @return

*/

cadena estática pública readFileLastByte(String fileName, int keyLength) {

Archivo archivo = nuevo Archivo(fileName);

if(!file.exists())return null;

StringBuffer str = new StringBuffer();

try {

// Abre un flujo de archivos de acceso aleatorio, mediante lectura y escritura

RandomAccessFile randomFile = new RandomAccessFile(fileName, "r");

// Longitud de

el archivo, en bytes

long fileLength = randomFile.length();

// Mueve el puntero de escritura del archivo al final del archivo.

for(int i = keyLength; igt; =1; i--){

randomFile.seek(fileLength-i);

str.append ((char)randomFile.read());

}

randomFile.close();

return str.toString();

} catch (IOException e) {

e.printStackTrace();

}

devuelve nulo

}

}