11 jul 2010

Algoritmo de encriptamiento Codigo Cesar VB.NET

algoritmo de encriptamiento Codigo Cesar vb.net


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
01 Public Class Cesar
02     'almacena todos los caracteres permitidos en el mensaje
03     Private Const tabla = "abcdefghijklmnopqrstuvwxyz 
04                           0123456789ABCDEFGHIJLKMNOPQRSTUVWXY
05                           Z,.-;:_{}[]+*\¿?!¡#$&/()
06                           =áéíóúÁÉÍÓÚñÑ " + Chr(13)
07     Private resultado As String
08     Private i As Integer
09     Private pos As Integer
10 
11     Function Encriptar(ByVal texto As String, ByVal key As 
12                        Integer) As String
13         resultado = ""
14         texto = clean(texto)
15         For i = 0 To (texto.Length - 1)
16             'buscar la posicion del caracter 
17             pos = tabla.IndexOf(texto.Chars(i))
18             'realiza el reemplazo de caracteres
19             If (pos + key) < tabla.Length Then
20                 resultado = resultado + tabla.Chars(pos + 
21                             key)
22             Else
23                 resultado = resultado + tabla.Chars((pos + 
24                             key) - tabla.Length)
25             End If
26         Next
27         'reconstruye el mensaje con los retornos de carro
28         resultado = resultado.Replace("{.13}", vbCrLf)
29         Return resultado
30     End Function
31 
32     Function Desencriptar(ByVal texto As String, ByVal key 
33                           As Integer) As String
34         resultado = ""
35         texto = clean(texto)
36         For i = 0 To (texto.Length - 1)
37             pos = tabla.IndexOf(texto.Chars(i))
38             If ((pos - key) < 0) Then
39                 resultado = resultado + tabla.Chars((pos - 
40                             key) + tabla.Length)
41             Else
42                 resultado = resultado + tabla.Chars(pos - 
43                             key)
44             End If
45         Next
46         resultado = resultado.Replace("{.13}", vbCrLf)
47         Return resultado
48     End Function
49 
50     Private Function clean(ByVal t As String) As String
51         ' reemplaza el retorno de carro con un simbolo
52         t = t.Replace(vbCrLf, "{.13}")
53         ' reemplaza los caracteres que no se encuentran en 
54         la tabla por un simbolo
55         For i = 0 To (t.Length - 1)
56             pos = tabla.IndexOf(t.Chars(i))
57             If (pos = -1) Then
58                 t = t.Replace(t.Chars(i), "{.d}")
59             End If
60         Next
61         Return t
62     End Function
63  End Class


Resultado


2 comentarios:

systemhands dijo...

buen dia que buen ejemplo solo tengo una duda para que usas en la funciones de encriptar y desencriptar la variable &it o solo it y donde la declaras y de que tipo es por que me marca un error de declaracion de variable

Anónimo dijo...

Disculpa ando tambien es esto de encriptacion y desencriptacion, bueno la duda systemhands no se si ya te la quitaste pero eso que preguntaste es un signo en html el cual es "<" menor que... Bueno hasta pronto y buen aporte del la aplicacion me va hacer de gran ayuda...

Publicar un comentario

 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | cna certification