Professional Documents
Culture Documents
Pantalla de la aplicacin.
Instrucciones de USO:
- Al momento del guardar el mensaje puede generar un mensaje cifrado para ser guardado en el archivo
midi.
- Luego de cifrar para descifrar puede volver a cifrar con la misma clave para ver el texto claro
nuevamente.
- La clave deben ser nmeros. Se hizo con nmeros solo para ilustrar el cambio de los caracteres una vez
se realiza la operacin XOR.
Modulo CargarMensaje.java
Recibe un String y un elemento tipo File, y utilizando unos de los tipos de MetaMessage (Tipo 1)
disponibles en el estndar midi.
##################################################################################################
public class CargarMensaje {
try {
mt = new MetaMessage();
mt.setMessage(0x01, TrackName.getBytes(), TrackName.length());
me = new MidiEvent(mt, (long) 0);
musicS.createTrack().add(me);
JFileChooser filemidi = new JFileChooser();
filemidi.showSaveDialog(filemidi);
this.archivo = filemidi.getSelectedFile();
return true;
}
Sobre esta imagen es posible ver como es la estructura del archivo midi que se modifica con la aplicacin, el
cual escribe al final el Track con el mensaje:
FUENTE DE INFORMACION:
http://www.automatic-pilot.com/WEB-INF/classes/MidiApps/hardCodedComposer.java
##################################################################################################
Modulo CryptoMsj.java
Este mdulo permite cifrar el texto que se incluye en el archivo midi, por default la aplicacin puede incluir el
texto claro en el archivo. Realiza una XOR una clave de nmeros que el usuario puede indicar. La clave debe
ser al menos del mismo tamao del mensaje.
##################################################################################################
return (cipher);
}
##################################################################################################
Modulo MetaEvent.java
@Override
public void meta(MetaMessage meta) {
String mensaje ="";
final int type = meta.getType();
//byte [] msj = meta.getMessage();
if(type==1){
System.out.println("MEL - type: " + type );
for(byte m:meta.getMessage()){
mensaje = mensaje + (char)m;
}
System.out.println("Mensaje: " + mensaje );
this.setMessage(mensaje);
}
}
Modulo PlayMidi.java
return (true);
this.sequencer.stop();
return true;
}
public Sequencer getSequencer() {
return sequencer;
}
}
##################################################################################################
Modulo Presenta1.java
##################################################################################################
/**
* Creates new form Presenta1
*/
public Presenta1() {
initComponents();
}
/**
}
else
JOptionPane.showMessageDialog(null, "La clave deben ser numeros");
} else
JOptionPane.showMessageDialog(null, "texto y clave almenos de igual tamao!");
this.globalfile = filemidi.getSelectedFile();
jTextField2.setText(globalfile.getName());
jTextField2.setBackground(Color.GREEN);
jTextField1.setText("");
jTextField3.setText("");
jTextField3.setText("");
System.out.println("archivoooo ver " + globalfile.getName());
if (globalfile != null && globalfile.getName() != null) {
try {
jTextField3.setText(readMsj.leer(globalfile));
System.out.println("texto de archivo " + jTextField3.getText());
try {
playMidi.reproducir(globalfile);
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
* For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(Presenta1.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(Presenta1.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(Presenta1.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(Presenta1.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
//</editor-fold>
Este permite lanzar la lectura del Metamensaje tipo 1 sobre el archivo que se ha seleccionado previamente.
##################################################################################################
sequencer.addMetaEventListener(metaEvent);
sequencer.setSequence(sequence);
sequencer.start();
Thread.sleep(1000L);
sequencer.stop();
// System.out.println("HOLAAAAAAAAAAAA BEBE"+metaEvent.getMessage());
return metaEvent.getMessage();
Modulo ValidarClave.java
Se decidi utilizar una clave para cifrar los mensajes que se quieran incluir en el archivo con una XOR, pero
esta clave debe ser solo numrica, este mdulo se encarga de validar que sea as:
##################################################################################################
return revalidar;
}
}
##################################################################################################