Capturar webcam con VB.NET

¿Que haremos? Crearemos una aplicación en Visual Studio, la cual hará uso de una webcam para capturar el video en frames independientes y depositarlos en memoria para despues mostralos al usuario a través de un picturebox y un Timer para crear la ilusión de movimiento. ¿Porque lo haremos? Porque es justo y necesario ¿Que necesitamos? [...]

Envío de correo con JavaMail/Netbeans

JavaMail es una expansión de Java que facilita el envío y recepción de e-mail desde código java. JavaMail implementa el protocolo SMTP (Simple Mail Transfer Protocol) así como los distintos tipos de conexión con servidores de correo -TLS, SSL, autentificación con usuario y password, etc [Según SantaWikipedia] ¿Qué necesitamos? JavaMail 1.4.5 Java y Netbeans 6.9 [...]

Proyecto de base de datos Firebird VB

En este proyecto realizaremos una aplicación de base de datos Firebird con el lenguaje de programación de Visual Basic de Microsoft, este proyecto tendrá las funciones básicas de gestión INSERT, DELETE, UPDATE y una interfaz de usuario para utilizarlas. ¿Que necesitamos? Visual Studio 2008 o superior Firebird última versión Firebird ADO.NET Data Provider. Conocimientos básicos [...]

Imprimir imagen con Print

La siguiente clase hace uso de PRINT para imprimir una imagen que se encuentra en un variable de tipo FileInputStream, esta clase a su vez es implementada desde una interfaz que hace fácil su uso, la clase así como todo el proyecto esta comentado. import java.io.File; import javax.print.Doc; import java.io.IOException; import javax.print.DocFlavor; import javax.print.SimpleDoc; import java.io.FileInputStream; [...]

Code Army Bolivia
Mostrando entradas con la etiqueta Criptografia. Mostrar todas las entradas
Mostrando entradas con la etiqueta Criptografia. Mostrar todas las entradas

16/1/10

Codigo Cesar: Algoritmo de encriptamiento en vb.net

JAN29



Utilizado, de ahí su nombre, por Julio César para comunicarse con sus oficiales, consiste en sustituir cada letra del mensaje por la que está n posiciones más adelante o atrás en el alfabeto.

Si n = 3, la A se sustituiría por la D, la B por E, la C por la F y así sucesivamente. De este modo, la palabra ABC se transforma en DEF encriptada, siendo n la llave (key) para poder decifrarla.

El proyecto.

1. Crea un nuevo proyecto en vb.net, la interfaz es sencilla y consiste en unos cuantos controles como en la imagen

2. Crea una nueva clase, llamala "Cesar.vb", esta clase estara compuesta por tres funciones, encriptar(), desencriptar() y clean(), esta ultima una funcion privada tiene el trabajo de limpiar el codigo de "retornos de carro" y de "caracteres especiales" que no se encuentren en la tabla predefinida para ello.

El codigo fuente de la clase Cesar.vb

Public Class Cesar

    'almacena todos los caracteres permitidos en el mensaje
    Private Const tabla = "abcdefghijklmnopqrstuvwxyz 0123456789ABCDEFGHIJLKMNOPQRSTUVWXYZ,.-;:_{}[]+*\¿?!¡#$&/()=áéíóúÁÉÍÓÚñÑ" + Chr(13)
    Private resultado As String
    Private i As Integer
    Private pos As Integer

    Function Encriptar(ByVal texto As String, ByVal key As Integer) As String
        resultado = ""
        texto = clean(texto)
        For i = 0 To (texto.Length - 1)
            'buscar la posicion del caracter 
            pos = tabla.IndexOf(texto.Chars(i))
            'realiza el reemplazo de caracteres
            If (pos + key) < tabla.Length Then
                resultado = resultado + tabla.Chars(pos + key)
            Else
                resultado = resultado + tabla.Chars((pos + key) - tabla.Length)
            End If
        Next
        'reconstruye el mensaje con los retornos de carro
        resultado = resultado.Replace("{.13}", vbCrLf)
        Return resultado
    End Function

    Function Desencriptar(ByVal texto As String, ByVal key As Integer) As String
        resultado = ""
        texto = clean(texto)
        For i = 0 To (texto.Length - 1)
            pos = tabla.IndexOf(texto.Chars(i))
            If ((pos - key) < 0) Then
                resultado = resultado + tabla.Chars((pos - key) + tabla.Length)
            Else
                resultado = resultado + tabla.Chars(pos - key)
            End If
        Next
        resultado = resultado.Replace("{.13}", vbCrLf)
        Return resultado
    End Function

    Private Function clean(ByVal t As String) As String
        ' reemplaza el retorno de carro con un simbolo
        t = t.Replace(vbCrLf, "{.13}")
        ' reemplaza los caracteres que no se encuentran en la tabla por un simbolo
        For i = 0 To (t.Length - 1)
            pos = tabla.IndexOf(t.Chars(i))
            If (pos = -1) Then
                t = t.Replace(t.Chars(i), "{.d}")
            End If
        Next
        Return t
    End Function

End Class

Resultado

continue reading

24/12/09

Encriptación: Metodo Bífido en java

JAN29



El método Bífido es un cifrado fraccionario. Es decir que cada letra viene representada por una o más letras o símbolos, y donde se trabaja con estos símbolos más que con las letras mismas.

El método comienza con la utilización de un alfabeto ordenado o desordenado (depende del grado de dificulad que se le pretenda dar en su descifrado) en una matriz 5x5.

En este ejemplo utilizaremos la siguiente matriz:

Al ser una matriz de 5x5 nos vemos obligados a cifrar de la misma forma la I y la J. El contexto nos permitirá distinguir cual de las dos letras se pretendía cifrar.
Para cifrar el texto en claro se escriben los equivalentes numéricos de cada letra, utilizando sus "coordenadas".

Por ejemplo: HOLA MUNDO, genera las siguientes coordenadas (f,c) 233431113245331434, y para proceder con la encriptacion la cadena de coordenadas resultantes es dividida en dos:
233431113
245331434
y se forma una nueva cadena de coordenadas 22 34 35 43 33 11 14 13 34 las cuales formaran el nuevo mensaje encriptado GOPS NADCO.

Este método altera la frecuencia de los caracteres a diferencia de lo que ocurre por ejemplo con los cifrados monoalfabéticos.

La interfaz

Creamos una clase llamada bifido.java, en esta clase colocamos el codigo respectivo para realizar la encriptacion como la desencriptacion, el codigo se encuentra comentado.


/**
 * @web http://jc-mouse.blogspot.com/
 * @author Mouse
 */
public class Bifido {

    char[][] matriz = new char[6][6];
    char[] mensaje;
    private String abc = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";    
    
    public Bifido(){   
        //la tabla esta formada por 25 letras, donde I=J
        matriz[1][1]='A'; matriz[1][2]='B';matriz[1][3]='C';matriz[1][4]='D';matriz[1][5]='E';
        matriz[2][1]='F'; matriz[2][2]='G';matriz[2][3]='H';matriz[2][4]='I';matriz[2][5]='K';
        matriz[3][1]='L'; matriz[3][2]='M';matriz[3][3]='N';matriz[3][4]='O';matriz[3][5]='P';
        matriz[4][1]='Q'; matriz[4][2]='R';matriz[4][3]='S';matriz[4][4]='T';matriz[4][5]='U';
        matriz[5][1]='V'; matriz[5][2]='W';matriz[5][3]='X';matriz[5][4]='Y';matriz[5][5]='Z';        
    }
    
    public String Encriptar(String t){
        t = clean(t);
        String nt="";
        String enc="";
        int fila ;
        int col;
        //para cada caracter se extrae el par de numeros correspondientes en la matriz
        for(int i=0; i<t.length();i++){
            nt = nt + getposicion(t.charAt(i));
        }           
        //Ahora se realiza el proceso de encriptacion
        for(int i=0;i<nt.length()/2;i++){            
            fila = Integer.parseInt(String.valueOf(nt.charAt(i)));             
            col = Integer.parseInt(String.valueOf(nt.charAt(i + nt.length()/2)));          
            enc = enc + String.valueOf(matriz[fila][col]);            
        }                
        enc=build(enc);
        return enc;
    }
    
    public String Desencriptar(String t){
        t=clean(t);
        String nt="";
        String tmp1="";
        String tmp2="";
        boolean b=true;
        //para cada caracter se extrae el par de numeros correspondientes en la matriz
        for(int i=0; i<t.length();i++){
            nt = nt + getposicion(t.charAt(i));
        }
        //como la cadena de numeros se encuentra encriptada, se procede
        //a su nuevo ordenamiento
        for(int i=0;i<nt.length();i++){
            if(b){
                tmp1= tmp1 + nt.charAt(i);
                b=false;
            }
            else
            {
                tmp2= tmp2 + nt.charAt(i);
                b=true;
            }
        }        
        nt= tmp1+tmp2;
        tmp1="";
        int fila;
        int col;
        //ahora que ya se tiene a la cadena de numeros con el orden original
        //se procede a reconstruir el mensaje
        for(int i=0; i<nt.length();i+=2){
            fila = Integer.parseInt(String.valueOf(nt.charAt(i)));     
            col = Integer.parseInt(String.valueOf(nt.charAt(i+1)));     
            tmp1 = tmp1 + String.valueOf(matriz[fila][col]);            
        }        
        tmp1=build(tmp1);
        return tmp1;
    }    
    //obtiene la posicion de filas y columnas correspondientes al caracter
    //pasado como parametro en la matriz
    private String getposicion(char c){
        String p = null;
        if(c=='J'){//como el caracter J no se encuentra en la tabla
            //se añade automaticamente con la posicion de I
            p="24";
        }
        else{
            for(int i=0;i<6;i++){
                for(int j=0;j<6;j++){
                    if(c==matriz[i][j]){
                      p = Integer.toString(i)+Integer.toString(j);
                      break;
                    }                
                }
            }
        }
        return p;
    }
    //encargado de limpiar el mensaje extrayendo solo las letras y
    //guardando los caracteres especiales para rearmar el mensaje despues
    private String clean(String t){   
      t = t.toUpperCase();  
      mensaje = t.toCharArray();
      String tmp1="";      
      for(int i=0;i<mensaje.length;i++){
          int x = abc.indexOf(mensaje[i]);
          if(x!=-1){//es una letra valida
              tmp1=tmp1+mensaje[i];
          }
      }       
      return tmp1;
    }
    //reconstruye el mensaje con las palabras encriptadas/desencriptadas
    //añadiendo los caracteres especiales
    private String build(String t){
        String tt="";
        int count=0;
        for(int i=0;i<mensaje.length;i++){
            int x = abc.indexOf(mensaje[i]);
            if(x!=-1){                
                tt= tt + t.charAt(count);
                count++;
            }
            else
            {
                tt=tt + mensaje[i];
            }    
        }
        return tt;
    }
}


Para implementar este clase en nuestra interfaz, hacemos las llamadas correspondientes a los objetos jButton


private void cmdEncriptarActionPerformed(java.awt.event.ActionEvent evt) {
        String t = texto1.getText();        
        texto2.setText(b.Encriptar(t));
} 

private void cmdDesencriptarActionPerformed(java.awt.event.ActionEvent evt) {
        String t = texto1.getText();        
        texto2.setText(b.Desencriptar(t));
}

El resultado


Ahora para incentivar en la construccion y prueba de este codigo, te presento a Natalia

Si quieres saber mas de ella decifra el siguiente mensaje, encontraras informacion importante, asi como su mail para que chatees con ella.


DZLE OC CDEYTPN, NCEST ACÑNDFTB DO CI TOM, AQBDQOA.
VN UQKIR ST EDCTA, YMDBBN Y DAYZAK, NR LÚEFSX DHSDCMDA
YF KT "WSOT UCCAVL", CWCMTL CAVV QBG DB FQLD: "AAQ 
GXQAPA DOPSQ ACQ KUO TY OGQL HSDLDEGDC AVAO SR IIQT
UBD AZ TMAZOCQHM SAL IYLZA VTMACCTNS, APNQN L LQDNDZACN".
DI GORLKCD QPDSCXA VOD MDBC NI ITSMAA MI HQFH_2590@NTSMDSI.UAP
DWOOQE!!!


SUERTE!!!

continue reading

23/12/09

Codigo Cesar: Algoritmo de encriptamiento en java

JAN29


Utilizado, de ahí su nombre, por Julio César para comunicarse con sus oficiales, consiste en sustituir cada letra del mensaje por la que está n posiciones más adelante o atrás en el alfabeto.

Si n = 3, la A se sustituiría por la D, la B por E, la C por la F y así sucesivamente. De este modo, la palabra ABC se transforma en DEF encriptada, siendo n la llave (key) para poder decifrarla.

Paso 1: Crea un nuevo proyecto en Netbeans y agreaga un jFrame y añade los siguientes objetos.

Paso 2: crea una nueva clase cesar.java y añade el codigo:


/**
 * @web http://jc-mouse.blogspot.com/
 * @author Mouse
 */
public class cesar {
    
private String tabla = "abcdefghijklmnopqrstuvwxyzáéíóú 1234567890@.,;:-+*/$#¿?!¡=()[]{}";

    public cesar(){        
    }
        
    public String Encriptar(String t, int key){       
        String texto = LimpiarCadena(t);
        //aqui se almacena el resultado
        String res = "";        
        for(int i = 0; i < texto.length();i++)
        {
            //busca la posicion del caracter en la variable tabla
            int pos = tabla.indexOf(texto.charAt(i));
            //realiza el reemplazo
            if ((pos + key) < tabla.length()){
                res = res + tabla.charAt(pos+key);
            }
            else
            {
                res = res + tabla.charAt((pos+key) - tabla.length());
            }         
        }        
        return res;
    }
    
    public String Desencriptar(String t, int key){        
        String texto = LimpiarCadena(t);
        String res = "";        
        for(int i = 0; i < texto.length();i++)
        {            
            int pos = tabla.indexOf(texto.charAt(i));            
            if ((pos - key) < 0){
                res = res + tabla.charAt((pos-key) + tabla.length());
            }
            else
            {
                res = res + tabla.charAt(pos-key);
            }         
        }        
        return res;
    }
    
    private String LimpiarCadena(String t){
        //transforma el texto a minusculas        
        t = t.toLowerCase();
        //eliminamos todos los retornos de carro
        t = t.replaceAll("\n", "");  
        //eliminamos caracteres prohibidos
        for(int i = 0; i < t.length();i++)
        {
            int pos = tabla.indexOf(t.charAt(i));
            if (pos == -1){
                t = t.replace(t.charAt(i), ' ');
            }
        }        
        return t;
    }           
}

Paso 3: para ejecutar el proyecto coloca el siguiente codigo en los jButton (Encriptar y desencriptar)

private void cmdEncriptarActionPerformed(java.awt.event.ActionEvent evt) {                                             
        String t = texto1.getText();
        int k = Integer.parseInt(txtkey.getText());
        if (k <=10){texto2.setText(c.Encriptar(t, k));}        
}     
private void cmdDesencriptarActionPerformed(java.awt.event.ActionEvent evt) {                                                
        String t = texto1.getText();
        int k = Integer.parseInt(txtkey.getText());
        if (k <=10){texto2.setText(c.Desencriptar(t, k));}
}    


Esta es una variante del algoritmo original del cesar que aparte de tomar en cuenta el abcdario, tambien añade el reconocimiento de numeros y de vocales acentuadas, asi como de algunos simbolos adicionales. Ademas el "Key", que por defecto es 3, puede ser cambiada a cualquier otro valor.

Pero como aprender es divertido, pero da flojera, para que pruebes este algoritmo te dejo un premio.


Esta linda señorita se llama carlita si quieres saber mas de ella y chatear por msn, te dejo mas datos y su correo aqui abajo:


ávkhz7shz7jvzhz7xél7whzhu7lu7áé7ípkh///
7klwluklu7kl7sh7mély1h7 7ívséuáhk7kl7áé7jvyh15u///
/lthps¿7jhyspáh?jhs*ováthps/jvtjpékhk7kl7vypnlu¿7jvjo
hihtih$7ivspíphzpáéhjpvu7zluáptluáhs¿7lu7éuh7ylshjp5ut
l7puálylzhu¿7ovtiylziézjv¿7htpzáhk$7jpáhz$7jvuáhjávz7
wyvmlzpvuhslz


si te interesa, descifre el codigo, suerte.


continue reading

Post recomendado