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.
El proyecto.
1. Crea un nuevo proyecto en vb.net, la interfaz es sencilla y consiste en unos cuantos controles como en la imagen
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
2 comentarios:
Gracias excelente
Gracias men por el codigo esta genial, pero podrias tambien publicar el codigo de los botones ya q no he podido hacerlo funcionar y vi otro post donde esta el ejercicio en java con el codigo de los botones, pero lo necesito en .net.
Gracias men, te agrdesco
Publicar un comentario