🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: es.comp.lenguajes.java
Article #29074

Encriptar una clase

#29074
From: Juan Pedro Barbancho Manchon
Date: Mon, 02 Feb 1998 00:00
157 lines
4217 bytes
Hola,
Os mando un peque�o programilla que sirve para encriptar un fichero,
utiliza el xor binario con el numero 12, pero seguro que utilizareis
otro, por cierto, atentos por que despues viene como cargar la clase Por
si puede ser de utilidad.

import java.io.*;
import java.security.*;

class xor{

    public static void main(String[] args) {

        try {
            FileInputStream fis = new FileInputStream(args[0]);
            FileOutputStream fous = new FileOutputStream(args[1]);
            byte b;
            while (fis.available() != 0) {
                b = (byte) fis.read();
                  fous.write(b ^ 12); // Encriptamos y guardamos
                };

            fis.close();
            fous.close();

           } catch (Exception e) {
            System.err.println("Caught exception " + e.toString());
        }

    }

}

Ahora voy a poner el programa que carga el classloader para cargar las
clases encriptdas con el Xor pero puedes utilizar otro.

// importar
import java.awt.*;
import java.awt.event.*;
import com.sun.java.swing.*;
import java.io.*;

// fin importar
/**
Llama -Clase que lanza Cryptclass
@Author JP
*/

public class Llama{
    public static void main(String s[])  throws ClassNotFoundException,
IllegalAccessException,InstantiationException{
  Loader Cargador =new Loader(); // Crea el nuevo cargador para las
clases, encriptadas con Xor (Cryptclass.xor, en vez de CryptClass.class)


     Cargador.loadClass("Cryptclass").newInstance();
    }
}

/**
Loader -Clase que lee una clase encriptada con xor
@Author JP
*/

class Loader extends ClassLoader{

private byte [] loadClassData(String name) throws IOException
 {
 byte [] sig = null;
// Lee la clase.xor
            InputStream fis = this.getClass().getResourceAsStream(name +
".xor");
 if(fis != null){
     ByteArrayOutputStream fos = new ByteArrayOutputStream();
            byte b;
            while (fis.available() != 0) {
                b = (byte) fis.read();
  fos.write(b ^ 12); //xor 12 AQUI SE REALIZA LA ENCRYPTACION
                };
     sig=fos.toByteArray(); // to []
            fis.close();
     fos.close();
 }
 return sig;
}

public synchronized Class loadClass(String name, boolean resolve) throws
ClassNotFoundException
 {
 Class c = null;
 byte data[] = null;
 try{
         data = loadClassData(name);
 }catch(IOException e){
  data=null;
 }finally{
  if (data!=null){ //Lee la clase .xor
         c = defineClass(name,data, 0, data.length);
  }else{
  Class clase;
  clase = Class.forName(name);
  return clase; //La clase.class
  }
  return c;
  }
  }

public synchronized Class loadClass(String name) throws
ClassNotFoundException
 {
 Class c = loadClass(name, false);
             return c;
        }
}

Solo lanza la clase no un metodo de la misma, ademas no funciona con
inner class
// La clase a encriptar
  Cryptclass{
    Cryptclass(){
    System.out.println("Esto va encriptado");
        }
    }

Para procesar esto

javac xor.java
javac Cryptclass.java
java xor Cryptclass.class Cryptclass.xor
del Crpyclass.class
javac Llama.class //Se supone que Loader es interna
java Llama

Por ahora solo lo he hecho funcionar en app, pero si alguno se aventura
en applet que me envie el codigo.

JuanP
--
--------------------------------------------------
Juan Pedro Barbancho Manch�n
CTI UCO
http://www.uco.es/grupos/cti
ct2bamaj@uco.es
Java Senior Programmer
Search for a job



--
--------------------------------------------------
Juan Pedro Barbancho Manch�n
CTI UCO
http://www.uco.es/grupos/cti
ct2bamaj@uco.es
Java Senior Programmer
Search for a job
Technical Details
Message-ID: <34D60669.31E236BD@uco.es>
Path: arc1-ca.pugleaf.net!unknown!not-for-mail

Show Full Headers
Complete Article Headers
X-Google-Language: ENGLISH,ASCII
X-Google-Thread: 1116f3,d46755753911c137,start
X-Google-Attributes: gid1116f3,public
From: Juan Pedro Barbancho Manchon <ct2bamaj@uco.es>
Subject: Encriptar una clase
Date: 1998/02/02
Message-ID: <34D60669.31E236BD@uco.es>
X-Deja-AN: 321461037
Content-Transfer-Encoding: 8bit
X-Priority: 3 (Normal)
Mime-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Organization: CTI
Newsgroups: es.comp.lenguajes.java