• Lunes 23 de Diciembre de 2024, 12:31

Autor Tema:  Clase Java Para Encripatar Contraseña  (Leído 1594 veces)

juanl3l

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Clase Java Para Encripatar Contraseña
« en: Jueves 23 de Noviembre de 2006, 18:35 »
0
Hola, necesito una clase java que haga mediante algun algoritmo la encriptacion de contraseñas en la BDD, y que a su vez permita recuperar la contrseña origianal(desencriptada).
¿Supongo que existira alguna, no?

Asi mismo me pregunto que libreria java de imagenes es la mas recomendable para la edicion de imagenes.

En la actualidad utilizo una liberia c++, pero me resulta bastante complicado implementar los metodos native para poder usarlo en java

gracias

lfbc

  • Nuevo Miembro
  • *
  • Mensajes: 9
    • Ver Perfil
Re: Clase Java Para Encripatar Contraseña
« Respuesta #1 en: Jueves 23 de Noviembre de 2006, 20:29 »
0
Bueno si buscas en google te puedes topar con algunas clases de encriptación y desencriptación, esta es la que me ecncontre navegando de página en página y la modifique un poco:

public class Security
{   /**
    * Desencripto una cadena
    * @param Cad
    * @param Key
    */
   public static String DecriptString(String Cad, String Key)
   {   String retorno = "";
      int i=0, j=0, ic=Key.length(),it=Cad.length();
      int temp;
      int[] claveascii = new int[ic];
      int[] textoascii = new int[it];
      for (i = 0; i < ic; i++)  
         claveascii = Key.charAt(i);
   
      for (i = 0; i < it; i++)  
         textoascii = Cad.charAt(i);
      
      for (i=0; i<it;i++)
        {   j++;
           
           if (j >= ic)
              j = 0;
                      
           temp= textoascii-claveascii[j];
              
           if (temp < 0)
              temp = temp + 256;

           retorno = retorno + (char)temp;
        }
      
      return retorno;
   }
   /**
    * Encripto una cadena
    * @param Cad
    * @param Key
    */
   public static String EncriptString(String Cad, String Key)
   {   String retorno = "";
      int i=0, j=0, ic=Key.length(),it=Cad.length();
      int temp;
      int[] claveascii = new int[ic];
      int[] textoascii = new int[it];
      for(i = 0; i < ic; i++)  
         claveascii = Key.charAt(i);
      
      for(i = 0; i < it; i++)  
         textoascii = Cad.charAt(i);
      
      for(i = 0; i<it; i++)  
      {   j++;
         if(j >= ic)
            j=0;
         
         temp= textoascii + claveascii[j];

         if (temp > 255) temp=temp-255;
         retorno = retorno + (char)temp;
      }
      
      return retorno;
   }   
}


donde:
para encriptar debes de llamar al metodo EncriptString() que recibe de parametros la cadena que vas a encriptar y la llave que vas a usar para encriptar esa cadena.

para desencriptar usas el metodo DecriptString() que recibe la cadena a desencriptar y la llave para hacerlo, donde la llave debe de ser la misma con la que encriptaste la cadena anteriromente.

La llave debe ser una cadena de letras (no debe de tener ningún número).

Espero te ayude. :hola:

silverfox

  • Miembro MUY activo
  • ***
  • Mensajes: 280
    • Ver Perfil
Re: Clase Java Para Encripatar Contraseña
« Respuesta #2 en: Viernes 24 de Noviembre de 2006, 08:47 »
0
Hola...

A partir de JDK 1.3, la biblioteca JCE (Java Crypto Extension) ya viene incluída con el paquete básico de clases JDK.

La clase Cipher te da opciones de algoritmos de distintas clases. Necesitarás un proveedor para según qué algoritmos, pero ya viene uno con la JDK, (v. clase Security.getProviders() ), en cada implementación de JDK han ido metiendo cosas nuevas, pero si quieres un algoritmo para el que no tienen soporte, necesitarás descargar algunas cosas de internet. Te remito a BouncyCastle, por ejemplo.


En cuanto a cosas de encriptación, ten cuidado con el almacenaje.
En el caso de Linux, creo recordar, las contraseñas se almacenan encriptadas con DES3 y para compararla con la introducida, se encripta y se compara, porque es más rápido que desencriptar la que hay guardada. (No sé si me explico)



Espero que te sirva.

Un saludo.





Silverfox