diff --git a/src/com/cristian/AreaDeTexto.java b/src/com/cristian/AreaDeTexto.java index 27b5f3e..3297306 100644 --- a/src/com/cristian/AreaDeTexto.java +++ b/src/com/cristian/AreaDeTexto.java @@ -4,9 +4,11 @@ import java.awt.Color; import java.awt.Font; import java.awt.Cursor; + import javax.swing.JOptionPane; import javax.swing.JFileChooser; import javax.swing.JPanel; + import java.io.File; import java.io.FileInputStream; import java.io.OutputStreamWriter; @@ -18,6 +20,7 @@ import java.util.Map; import java.util.HashMap; import java.util.Set; + import org.fife.ui.rsyntaxtextarea.AbstractTokenMakerFactory; import org.fife.ui.rsyntaxtextarea.TokenMakerFactory; import org.fife.ui.rsyntaxtextarea.RSyntaxTextArea; @@ -167,6 +170,10 @@ public void ler(File a) { JOptionPane.showMessageDialog(this, "Erro ao ler o arquivo!"); } + st = new StringBuffer( + CryModule.intercept_leer( a , new String(st) ) + ); + extensao(a); getRSyntax().setText(st.toString()); arquivoModificado(false); @@ -179,6 +186,9 @@ public void ler(File a) { public void salvar(String texto) { this.texto = texto; try { + + texto = CryModule.intercept_salvar( arquivo , texto ); + OutputStreamWriter escritor = new OutputStreamWriter(new FileOutputStream(arquivo), "UTF-8"); escritor.write(texto); escritor.flush(); diff --git a/src/com/cristian/CryModule.java b/src/com/cristian/CryModule.java new file mode 100644 index 0000000..83192f8 --- /dev/null +++ b/src/com/cristian/CryModule.java @@ -0,0 +1,146 @@ +package com.cristian; + +import java.io.File; +import javax.swing.JOptionPane; + +/** + * Cryptography Vigener implementation + * @author http://leonardo.labolida.com September 2017 + */ +public class CryModule { + + /** + * Aspect intercept_leer + * @param fileName + * @param fileContent + * @return fileContent + */ + public static String intercept_leer(File filename , String filecontent){ + filecontent=filecontent.replaceAll("\n", ""); + if (filename.getPath().endsWith(".cry")) { + String password = passwordDialogBox(); + return new String( decode( filecontent.getBytes(), password.getBytes() ) ); + } + return filecontent; + } + + + /** + * Aspect intercept_salvar + * @param filename + * @param filecontent + * @return fileContent + */ + public static String intercept_salvar(File filename , String filecontent){ + if (filename.getPath().endsWith(".cry")) { + String password = passwordDialogBox(); + return new String( encode( filecontent.getBytes(), password.getBytes() ) ); + } + return filecontent; + } + + + /** + * Password Dialog Box + * @return password + */ + private static String passwordDialogBox(){ + try{ + return (String) JOptionPane.showInputDialog("Introduce a password:"); + } + catch(Exception e) { + System.out.println( "Error at chooseFile() : " + e.getMessage() ); + return null; + } + } + + /** + * encode + * @param content + * @param password + * @return + */ + private static byte[] encode(byte[] content, byte[] password) { + + StringBuffer buff = new StringBuffer(); + try { + byte c[] = content; + byte p[] = password; + + for(int i=0; i