Test Foro de elhacker.net SMF 2.1

Programación => Programación General => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: Genkidan en 11 Abril 2012, 09:03 AM

Título: Encriptador de mensajes
Publicado por: Genkidan en 11 Abril 2012, 09:03 AM
Hola, soy novato en Visual Basic (2010 Express), estoy haciendo una especie de "encriptador" de mensajes sencillo.

La idea es que sustituya las letras del abecedario por números, por ejemplo:
a=1, b=2, c=3, etc. Y también al revéz: 1=a, 2=b, 3=c, etc.

El programa que hice me convierte letras a números perfectamente, pero tengo un pequeño problema al hacer la operación contraria, cuando intento convertir números en letras, el programa toma los dígitos por separado, ejemplo:

cifrando:
Escribo la letra "L" y me la convierte en un "12" (Hasta ahí todo bien)

descifrando:
Cuando escribo "12" no me devuelve la "L" sino que toma el 1 y 2 por separado y escribe "AB"

¿Cómo puedo solucionar esto? Espero puedan ayudarme, gracias.
Título: Re: Encriptador de mensajes
Publicado por: Elemental Code en 11 Abril 2012, 12:06 PM
vas a tener que hacer que quede asi.

abcde

1|2|3|4|5

Un ejemplo mas complejo:

lale

12|1|12|5


Necesitas un "delimitador" que tenga los numeros juntos.
Despues con un split los tenes separaditos y lindos :)
Título: Re: Encriptador de mensajes
Publicado por: rembolso en 11 Abril 2012, 12:44 PM
puedes hacer un split como dice Elemental Code o tambien tienes la opcion de modificar el code  haciendo un step  2 (haciendo esto para que te alcancen los numeros)

01 =  a
02 =  b
03 = c
04 = d
mira te dejo un ejemplo :
Código (vb) [Seleccionar]
'Code by Rembolso
' usando step y optimizando codigo
Const Minus As String = "abcdefghijklmnñopqrstuvwxyz"
Private Function EncriStep(Datos As String)
Dim i, Buff As String

For i = 1 To Len(Datos)
If InStr(1, Minus, Mid(Datos, i, 1)) <= 9 Then
Buff = Buff & "0" & InStr(1, Minus, Mid(Datos, i, 1))
Else
Buff = Buff & InStr(1, Minus, Mid(Datos, i, 1))
End If
Next i
EncriStep = Buff
End Function
Private Function DescipStep(Datos As String)
Dim i, Buff As String

For i = 1 To Len(Datos) Step 2
If InStr(1, Mid(Datos, i, 2), "0") = 1 Then
Buff = Buff & Mid(Minus, Replace(Mid(Datos, i, 2), 0, ""), 1)
Else
Buff = Buff & Mid(Minus, Mid(Datos, i, 2), 1)
End If
Next i
DescipStep = Buff
End Function
'ejemplo con msgbox
msgbox  EncriStep("abcdefgho")
MsgBox DescipStep(EncriStep("abcdefgho"))
Título: Re: Encriptador de mensajes
Publicado por: Karcrack en 11 Abril 2012, 14:25 PM
Como ya han resuelto tu duda sólo me pondré tiquismiquis y añadiré estos dos puntos:

Saludos.
Título: Re: Encriptador de mensajes
Publicado por: Genkidan en 12 Abril 2012, 03:35 AM
Gracias por responder, entiendo a que se refieren.
Yo hice algo sumamente sencillo (tal vez ese fue mi error), estoy utilizando la instrucción "Replace" para reemplazar una letra por un número, sería esto:

Text1.Text = Replace(Text1.Text, "L", "12")

Y para la operación contraria, escribí:

Text1.Text = Replace(Text1.Text, "12", "L")

Mi duda es:
¿Cómo hay que indicarle a la instrucción "Replace" que tome el 12 como un único valor numérico en lugar de una cadena de dos caracteres?