Foros del Web » Programación para mayores de 30 ;) » Java »

Encriptacion de contraseñas con java

Estas en el tema de Encriptacion de contraseñas con java en el foro de Java en Foros del Web. Hola! A ver, una dudilla con el tema de la encriptacion...He encontrado un codigo para realizar la encriptacion de un texto plano en sha1 y ...
  #1 (permalink)  
Antiguo 03/04/2008, 06:25
 
Fecha de Ingreso: marzo-2008
Mensajes: 42
Antigüedad: 16 años, 1 mes
Puntos: 0
Encriptacion de contraseñas con java

Hola!
A ver, una dudilla con el tema de la encriptacion...He encontrado un codigo para realizar la encriptacion de un texto plano en sha1 y guardarlo en la base de datos trasformado a base64, lo que pasa que no me va y no se porque :(. Os pongo el codigo:

import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import sun.misc.BASE64Encoder;
import sun.misc.CharacterEncoder;

public class SHA1BASE64 {

public SHA1BASE64() {
}

public static String encriptar(String textoplano) throws IllegalStateException {
MessageDigest md = null;

try {
md = MessageDigest.getInstance("SHA"); // Instancia de generador SHA-1
}
catch(NoSuchAlgorithmException e) {
throw new IllegalStateException(e.getMessage());
}

try {
md.update(textoplano.getBytes("UTF-8")); // Generación de resumen de mensaje
}
catch(UnsupportedEncodingException e) {
throw new IllegalStateException(e.getMessage());
}

byte raw[] = md.digest(); // Obtención del resumen de mensaje
String hash = (new BASE64Encoder()).encode(raw); // Traducción a BASE64

return hash;
}
}

Y para llamar a la funcion, lo hago asi:

SHA1BASE64 encrip = new SHA1BASE64();
String contras_encrip = encrip.encriptar(socio.getContrasenia());

El problema, es que al introducir los datos en el formulario y darle a enviar, me sale la siguiente excepcion en la linea correspondiente a SHA1BASE64 encrip = new SHA1BASE64():

java.lang.NullPointerException

Qué hago mal? :(
  #2 (permalink)  
Antiguo 14/08/2008, 04:14
 
Fecha de Ingreso: diciembre-2007
Mensajes: 124
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: Encriptacion de contraseñas con java

Un poco tarde pero me ha servido tu respuesta, lo que hacias mal era el contructor, que lo tenias vacio:

public SHA1BASE64() {
}

Hay que ponerle la clausula super();

public SHA1BASE64() {
super();
}

Gracias a esa clase he logrado encriptar mis contraseñas, gracias.
  #3 (permalink)  
Antiguo 14/08/2008, 14:46
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Respuesta: Encriptacion de contraseñas con java

Cita:
Iniciado por JuaNiNNaio Ver Mensaje
Un poco tarde pero me ha servido tu respuesta, lo que hacias mal era el contructor, que lo tenias vacio:

public SHA1BASE64() {
}

Hay que ponerle la clausula super();

public SHA1BASE64() {
super();
}
¿Si extiendes Object... el super() para que?
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #4 (permalink)  
Antiguo 18/08/2008, 00:15
 
Fecha de Ingreso: diciembre-2007
Mensajes: 124
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: Encriptacion de contraseñas con java

Cita:
Iniciado por GreenEyed Ver Mensaje
¿Si extiendes Object... el super() para que?
No lo se, a mi me ha funcionado asi.
  #5 (permalink)  
Antiguo 20/08/2010, 07:52
 
Fecha de Ingreso: agosto-2010
Mensajes: 4
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: Encriptacion de contraseñas con java

saludo a todos

por favor si tienes el codigo para desencriptar, podrias mostrarlo??

thanks.
  #6 (permalink)  
Antiguo 21/08/2010, 16:32
Avatar de 2102325  
Fecha de Ingreso: octubre-2009
Ubicación: Santo Domingo RD
Mensajes: 75
Antigüedad: 14 años, 6 meses
Puntos: 1
Respuesta: Encriptacion de contraseñas con java

Si lo que quieres es encriptar la contrasena que capturas en un formulario, es muy facil, yo lo hago de la siguiente manera...

En el metodo agregar del manejar de tu entidad usuario cuando le estes pasando por parametro el value de la contrasena, solo tienes que pasar dentro del metodo
SHA(contrasena),

me explico.:
Seria algo como esto


Código Java:
Ver original
  1. public void agregarNuevoUsuario(Usuario usuario){
  2.         String sentenciaSQL = "INSERT INTO usuarios(USUARIO, CLAVE, NOMBRE_COMPLETO, PERFIL)" +
  3.                 "  VALUES('"+usuario.getUsuario()+"',SHA('"+usuario.getClave()+"'") +
  4.                 ",'"+usuario.getNomCompleto()+"','"+usuario.getPerfil()+"')";
  5.         conexionDB.ejecutarMandato(sentenciaSQL);
  6.     }
__________________
Lo QuE SaBeMoS eS UnA gOta dE aGuA, Lo QuE iGnOraMos, eS El OcEaNo...
Saludos desde RD
  #7 (permalink)  
Antiguo 22/08/2010, 04:03
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Respuesta: Encriptacion de contraseñas con java

Cita:
Iniciado por estudiante1 Ver Mensaje
saludo a todos

por favor si tienes el codigo para desencriptar, podrias mostrarlo??

thanks.
En realidad no es una encriptación, es una función de hash por lo que no hay función de descriptar.

S!
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #8 (permalink)  
Antiguo 21/09/2010, 08:49
 
Fecha de Ingreso: agosto-2010
Mensajes: 4
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: Encriptacion de contraseñas con java

Cita:
Iniciado por GreenEyed Ver Mensaje
En realidad no es una encriptación, es una función de hash por lo que no hay función de descriptar.

S!
ahh ok, pero entonces cual seria la forma de decifrar una contraseña, pasada por ua funcion hash??
la idea es recuperar una contraseña olvidada.

gracias por sus respuestas
  #9 (permalink)  
Antiguo 21/09/2010, 10:42
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años
Puntos: 306
Respuesta: Encriptacion de contraseñas con java

Fuerza bruta, probando millones de contraseñas hasta que encuentres una que genera el mismo hash, y más complicado, ya que creo que distintas cadenas pueden dar el mismo hash.

Piensa que el objetivo es que las contraseñas sean seguras, incluso en el caso de que alguien tenga acceso a la BBDD.
  #10 (permalink)  
Antiguo 22/09/2010, 08:51
 
Fecha de Ingreso: agosto-2010
Mensajes: 4
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: Encriptacion de contraseñas con java

aja pero mi duda es:
si estoy realizando una aplicacion donde creo un usuario con su respectiva contraseña, la cual encripto con sha-1, en caso que al usuario se le olvide su contraseña ¿no hay manera de recordarsela? como por ejemplo creandole un tipo de pregunta con una respuesta, luego q desencripte su contrase y se la muestre???

gracias
  #11 (permalink)  
Antiguo 22/09/2010, 11:56
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Respuesta: Encriptacion de contraseñas con java

No. De hecho es mejor así ya que el usuario no puede acusarte de "saber" su contraseña. La única forma de que recupere el acceso es dándole una contraseña nueva. Casi todos los sistemas decentes de gestión de contraseñas funcionan así.

S!
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.
  #12 (permalink)  
Antiguo 07/10/2010, 07:25
 
Fecha de Ingreso: agosto-2010
Mensajes: 4
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: Encriptacion de contraseñas con java

ahh ok, gracias por tu respuesta
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:23.