| |||
Respuesta: como encriptar un numero en java |
| |||
Respuesta: como encriptar un numero en java Te recomendaría que usaras el cifrado Blowfish. La implementación la tienes con BCrypt para java. Hay bastante información al respecto, ejemplos, etc. |
| |||
Respuesta: como encriptar un numero en java Pondre un ejemplo para cifrar una variable llamada password, que es lo que te pasa el usuario en texto plano en el campo login: Código PHP: Para comprobar si el password (en texto plano, sin cifrar) coincide con el password cifrado en la bd: Código PHP: http://es.wikipedia.org/wiki/Blowfish |
| ||||
Respuesta: como encriptar un numero en java jav_000 Gracias por tan valioso aporte, ya tengo la clase lista pero no me reconoce el metodo .gensalt() del BCrypt. Que estara pasando, porque ya tengo los dos paquetes de la clase Bcrypt. |
| |||
Respuesta: como encriptar un numero en java Mira que tengas ese método en tu clase BCrypt. Puedes bajarte la clase desde aquí: https://gist.github.com/651613 |
| ||||
Respuesta: como encriptar un numero en java Buenas tardes, Necesito ayuda y como es parecido a lo que ocurría en este post os lo comento. Tengo que encriptar una contraseña con blowfish y guardarla en un fichero de texto. Cerrar el programa y abrir el fichero en desencriptarlo. El problema que tengo es el siguiente, en el propio programa, si encripto una contraseña y la vuelvo a desencriptar me funciona bien. Pero cuando lo encripto, lo guardo en un txt y lo abro con otro programa distinto, no me es capaz de desencriptarlo. Me sale un error de padding o me dice que tiene que ser multiplo de 8 bytes... ¿Me podéis ayudar? Llevo mucho tiempo dedicado y no se me ocurre nada y estoy atascado. Puedo postear ahora el código a ver si así os resulta más fácil... |
| ||||
Respuesta: como encriptar un numero en java En la clase Blowfish, genero una contraseña: Cita: public class blowfish { private static String pass= "pruebapass"; public static void main(String[] args) throws Exception { KeyGenerator keygenerator = KeyGenerator.getInstance("Blowfish"); SecretKey secretkey = keygenerator.generateKey(); Cipher cipher = Cipher.getInstance("Blowfish"); //ENCRIPTAR PASS cipher.init(Cipher.ENCRYPT_MODE, secretkey); byte[] encriptarPASS = cipher.doFinal(pass.getBytes()); try{ FileWriter fw = new FileWriter(new File("/home/carlos/Escritorio/password.txt")); PrintWriter pw = new PrintWriter(fw); pw.println(encriptarUSER); pw.close(); } catch(IOException ex) { System.out.println("error"); } Luego cierro programa y abro otro programa. Estamos en la clase VentanaLogin y leo: Cita: if (result == JFileChooser.APPROVE_OPTION){ byte [] aux; String linea=null; File file = fileChooser.getSelectedFile(); /***LECTURA DEL FICHERO ***/ try{ FileReader fr = new FileReader(file); BufferedReader br = new BufferedReader(fr); linea = br.readLine(); while(linea!=null) { KeyGenerator keygenerator = KeyGenerator.getInstance("Blowfish"); SecretKey secretkey = keygenerator.generateKey(); Cipher cipher = Cipher.getInstance("Blowfish"); cipher.init(Cipher.ENCRYPT_MODE, secretkey); aux=linea.getBytes(); byte [] usuario = cipher.doFinal(aux); JOptionPane.showMessageDialog(null, new String(usuario)); //bf.DESEncriptar_Usuario(aux); linea=br.readLine(); } br.close(); } catch(IOException ex) { } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } |
| |||
Respuesta: como encriptar un numero en java Descifrar una clave cifrada con blowfish? Eso no se puede. La gracia del algoritmo consiste en que puedes ir de Texto plano -> Clave cifrada, pero no al revés. Lo que se hace es cifrar la clave y almacenarla cifrada. A la hora de comprobar si la clave que te pasa el usuario es la correcta, cifras esa clave que te pasa, y comparas la clave cifrada del usuario, con la clave cifrada que tenías almacenada. La forma de descifrar una clave cifrada con blowfish sería usando un diccionario de claves cifradas, que ya entrarían en "técnicas hacking". Además si se usa un salto (con el método genSalt), se dificultaría a un atacante el poder descifrar la clave. |
| ||||
Respuesta: como encriptar un numero en java Entiendo y ¿hay algún método para hacer lo que yo quiero? Lo único que quiero hacer es escribir un usuario y contraseña en una hoja de texto encriptado como sea. Entonces cuando el programa arranque, el usuario selecciona el archivo con su nombre (carlos.txt) y luego pondrá usuario y contraseña y deberá coincidir con la del fichero de texto que está encriptado. ¿Es posible hacer eso aunque sea con otra clase, otro modo de encriptar o algo? Muchas gracias por tu respuesta jav_000 |
| |||
Respuesta: como encriptar un numero en java Lo que tienes que hacer es lo que te dije arriba. Te pondré un ejemplo: Digamos que el usuario pone tiene como clave la cadena "1234". Cifras su clave y la guardas. Imaginemos que la clave cifrada es "ABCD". Cuando el usuario quiera volver a entrar pides el password. El te pasa el password, por ejemplo "1234". Ese password que te ha pasado lo cifras, obteniendo "ABCD". Finalmente comparas el password que te acaba de pasar, cifrado, con lo que tenías guardado. Es igual "ABCD" y "ABCD"? Sí, entonces login correcto. Si el usuario te pone otra clave distinta de "1234" al cifrarla no se convertirá en "ABCD", y no coincidirá. Es una explicación muy a grandes rasgos de lo que hace blowfish, aunque debajo del algoritmo haya muchísima más teoría. |
| ||||
Respuesta: como encriptar un numero en java Muchas gracias, ahora si lo he entendido. Supongo que a mi me falla porque estoy encriptando un usuario en una hoja de texto con una secretkey al azar y cuando la vuelvo a desencriptar genero otra secretkey distinta a la que había creado antes. Porque siempre que encripto antonio, me pone la misma cadena, pero la secretkey es una key generada con un random. Ya he entendido lo que me has dicho jav_000 perdona por mi torpeza y gracias por tu explicación. PD: Voy a intentar hacerlo a ver si me sale ;) |
| ||||
Respuesta: como encriptar un numero en java No me funciona jav_000 Con el programa 1 encripto Juan y lo guardo en admin.txt y me pone [B@6b7920 Con el programa 2, el usuario mete Juan, y cuando lo encripto no coincide con admin.txt. El resultado es [B@12d4551 No coinciden... ¿Como puede ser eso? |
| |||
Respuesta: como encriptar un numero en java Estás usando el propio método de BCrypt? Sería así: Código PHP: Aquí tienes la implementación original para java: http://www.mindrot.org/projects/jBCrypt/ |
| ||||
Respuesta: como encriptar un numero en java yo estoy usando import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.SecretKey; KeyGenerator keygenerator = KeyGenerator.getInstance("Blowfish"); SecretKey secretkey = keygenerator.generateKey(); Cipher cipher = Cipher.getInstance("Blowfish"); //ENCRIPTACION cipher.init(Cipher.ENCRYPT_MODE, secretkey); y AQUI ENCRIPTO //DESENCRIPTACION cipher.init(Cipher.DECRYPT_MODE, secretkey); y AQUI DESENCRIPTO Voy a ver si con lo que me comentas funciona ;) Gracias. |
| ||||
Respuesta: como encriptar un numero en java Por el formato de las cadenas, creo que no estás guardando la cadena cifrada en el txt, sino la referencia que usa java para el objeto.
__________________ Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe. |
| ||||
Respuesta: como encriptar un numero en java Cita: Si lo grabo como bytes [] se guarda así.Si lo grabo como string se guarda &"/��� Así que no sé si se está guardado bien... Por cierto para usar JBcrypt tengo que importar BCrypt.java??? Es que al implementar el código no me renoce BCrypt... Gracias Xerelo por tu ayuda. |
| |||
Respuesta: como encriptar un numero en java Tienes que tener la clase dentro de tu proyecto, claro. No vale importar porque esa clase en concreto no viene en el paquete de seguridad de java. El link directo a su descarga es este: http://www.mindrot.org/files/jBCrypt/jBCrypt-0.3.zip Es bastante fácil de usar. |
| ||||
Respuesta: como encriptar un numero en java Puff, creo que soy demasiado (bastante) torpe porque estoy en eclispe, con proyecto Prueba e importo jBCrypt-03 y hay clases que me dice error. Jaja, ya veo que Java no es lo mio, que torpe soy :B |
| ||||
Respuesta: como encriptar un numero en java Pues tampoco funciona porque hago lo siguiente: String password = "prueba";
Código:
String hashed = BCrypt.hashpw(password, BCrypt.gensalt()); //AQUI METO Hashed en prueba.txt Y en prueba.txt me mete un string bastante largo Cita: $2a$12$vVbpNaFf7dOeldJmWLj33e8rm/9zrjLQJeBzrNaVqNcJISQdBv1ZG Ahora voy al programa que estoy haciendo, he importado bcrypt tambien y compruebo que el usuario ponga prueba, lo encripto y no coincide con el prueba que encripte antes en el otro programa. Cita: Dios, creo que lo voy a dejar, es imposible hacerlo T_T y encima más torpe no puedo ser, jaja.$2a$12$n3oXT69uEmiAoirNLhKqLejNGS49n5fiig22apNT.Gt Ip5hGVuqkC Muchas gracias por toda la ayuda, se agradece. |
| |||
Respuesta: como encriptar un numero en java No tienes que hacerlo así. Si cifras con BCrypt la misma clave siempre te va a generar algo distinto, pero manteniendo la cabecera. Si te fijas en ambas cadenas cifradas, el comienzo es este: "$2a$12$". Si usas el método estático checkpw verás como obtienes un true, al tener la misma cadena de origen. Si usas otro método para cifrar, por ejemplo SHA, sí que obtienes la misma cadena al cifrar dos veces una palabra. |
| ||||
Respuesta: como encriptar un numero en java Entonces si encripto Juan, lo guardo en fichero.txt y luego en un JTextField escribo Juan, lo encripto otra vez, lo unico que tengo que comprobar es solamente si coinciden $2a$12$ en ambos??? Es que compruebo $2a$12$vVbpNaFf7dOeldJmWLj33e8rm/9zrjLQJeBzrNaVqNcJISQdBv1ZG $2a$12$n3oXT69uEmiAoirNLhKqLejNGS49n5fiig22apNT.Gt Ip5hGVuqkC Y me da false :S |
| |||
Respuesta: como encriptar un numero en java Cita: Mi autocito :)
Iniciado por jav_000 No tienes que hacerlo así. Si cifras con BCrypt la misma clave siempre te va a generar algo distinto, pero manteniendo la cabecera. Si te fijas en ambas cadenas cifradas, el comienzo es este: "$2a$12$". Si usas el método estático checkpw verás como obtienes un true, al tener la misma cadena de origen. Si usas otro método para cifrar, por ejemplo SHA, sí que obtienes la misma cadena al cifrar dos veces una palabra. No tienes que comprobar usando equals las dos cadenas, obligatoriamente tienes que hacerlo con el método de BCrypt, checkpw. Si lo haces verás como obtienes true, y si metes otra clave errónea false. |
| ||||
Respuesta: como encriptar un numero en java Si si, si lo tengo hecho así: Cita: en linea tengo Juan encriptado while(linea!=null) { Susuario=jtUsuario.getText(); JOptionPane.showMessageDialog(null, linea); Scomprobar = BCrypt.hashpw(Susuario, BCrypt.gensalt()); //String hashed = BCrypt.hashpw(password, BCrypt.gensalt(12)); JOptionPane.showMessageDialog(null, linea + "\n" + Scomprobar); if (BCrypt.checkpw(linea, Scomprobar)) System.out.println("It matches"); else System.out.println("It does not match"); y en Susuario, como pone en el codigo, es lo que escribo en el JTextField (jtUsuario). Me sale por pantalla It does not match todo el rato... ¿qué puedo estar haciendo mal? |
| ||||
Respuesta: como encriptar un numero en java Ya me funcionó Jav. El problema era mi lectura de fichero, lo leía como antes, como Bytes []. Perdona me torpeza, ya se ha visto que soy muy novato y muy principiante. Muchas gracias por tu ayuda. PD: Me he echo replantearme si seguir probando esto o no, puede que no sea lo mio jaja. Un saludo y mil gracias, te debo unas cañas, si eres del sur ya sabes. |
| |||
Respuesta: como encriptar un numero en java Lo importante es que haya salido. Y eso de plantearte dejar eso pues depende. Si no te gusta investigar, pedir consejos en foros, aprender, etc, entonces déjalo, porque el camino que te espera si sigues en esto va a ser así siempre. Por otra parte si cosas como éste éxito te alegran el día, entonces continúa que no en todas las profesiones se pueden obtener éxitos a diario. |
Etiquetas: |