Buenas, quiero realizar un programa que cifre el texto ingresado a MD5, esto en un entorno gráfico utilizando Netbeans, el "modelo" ya lo tengo, en la siguiente imagen queda todo mas claro.
http://ompldr.org/vZnMxZQHasta el momento solo puedo hacer que lo que se ingresa pase a donde debiera estar el texto cifrado en MD5, esto lo hago creando el evento en el jButton "convertir" con el siguiente código
md5Text.setText(ingresoTexto.getText());
.
El problema es que no se como ni donde poner el código para cifrar de texto a MD5, si hacerlo a continuación de
md5Text.setText(ingresoTexto.getText());
. o en una clase aparte y crear instancias y llamarlas dentro de la clase "ventana".
como se puede ver tengo 3 clases,
- "Cifrados" que es la main, y que solo tengo el siguiente código
package cifrados;
public class Cifrados {
public static void main
(String[] args
) {
ventana instancia = new ventana();
instancia.setVisible(true);
}
}
.
- "Prueba" que es donde tengo el código que hace el trabajo de convertir a MD5, que lo dejo acá
package cifrados;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class prueba {
public static String md5
= "MD5";
private static String toHexadecimal
(byte[] digest
){ //array digest == digerir /*":", no es usado como operador,
que se utilizará para iteración a través de la matriz de la matriz denominada "digest"
#se conserva la variable aux e itera el array digest
* Convierte un arreglo de bytes a String usando valores hexadecimales
* @param digest arreglo de bytes a convertir
* @return String creado a partir de digest
*/
for(byte aux : digest){
int b = aux & 0xff;
if(Integer.
toHexString(b
).
length() == 1) hash
+= "0"; }
return hash;
}
/***
* cifra un mensaje de texto mediante algoritmo de resumen de mensaje.
* @param message texto a cifrar
* @param algorithm algoritmo de encriptacion, MD5
* @return mensaje cifrado
*/
byte[] digest = null;
byte[] buffer = message.getBytes();
try{
messageDigest.reset();
messageDigest.update(buffer);
digest = messageDigest.digest();
System.
out.
println("Error creando Digest"); }
return toHexadecimal(digest);
}
public static void main
(String[] args
) {
String mensaje
= "Esto no es una prueba de MD5"; System.
out.
println("Mensaje = " + mensaje
); System.
out.
println("MD5 = " + prueba.
getStringMessageDigest(mensaje, prueba.
md5)); }
- "ventana" que es donde tengo el entorno gráfico, con el siguiente código.
package cifrados;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import javax.swing.JOptionPane;
import cifrados.prueba;
public class ventana
extends javax.
swing.
JFrame { public ventana() {
initComponents();
}
private void initComponents() {
jLabel1
= new javax.
swing.
JLabel(); convertir
= new javax.
swing.
JButton(); jLabel2
= new javax.
swing.
JLabel();
jLabel1.setText("Ingrese Texto");
ingresoTexto.setText("jTextField1");
convertir.setText("Convertir");
public void actionPerformed
(java.
awt.
event.
ActionEvent evt
) { convertirActionPerformed(evt);
}
});
jLabel2.setText("MD5");
md5Text.setText("jTextField2");
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(57, 57, 57)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel2)
.addComponent(jLabel1))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.
addComponent(ingresoTexto, javax.
swing.
GroupLayout.
DEFAULT_SIZE,
434,
Short.
MAX_VALUE) .addComponent(md5Text))
.
addContainerGap(34,
Short.
MAX_VALUE)) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.
addContainerGap(javax.
swing.
GroupLayout.
DEFAULT_SIZE,
Short.
MAX_VALUE) .addComponent(convertir)
.addGap(211, 211, 211))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(25, 25, 25)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(ingresoTexto, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel1))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(convertir)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(md5Text, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel2))
.
addContainerGap(168,
Short.
MAX_VALUE)) );
pack();
}
private void convertirActionPerformed
(java.
awt.
event.
ActionEvent evt
) { /*creo el evento, lo que esta en "ingresoTexto" pase a "md5Text"*/
md5Text.setText(ingresoTexto.getText());
/*aca deberia ingresar el codigo de la clase "prueba" ??
o solo deberia crear una instancia de la clase "prueba" pidiendo el ingreso de datos y otra para convertir a MD5 ??*/
}
public static void main
(String args
[]) { try {
if ("Nimbus".equals(info.getName())) {
javax.
swing.
UIManager.
setLookAndFeel(info.
getClassName()); break;
}
}
java.util.logging.Logger.getLogger(ventana.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
java.util.logging.Logger.getLogger(ventana.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
java.util.logging.Logger.getLogger(ventana.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
java.util.logging.Logger.getLogger(ventana.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
public void run() {
new ventana().setVisible(true);
}
});
}
private javax.
swing.
JButton convertir
; private javax.
swing.
JLabel jLabel1
; private javax.
swing.
JLabel jLabel2
; }