Encriptador de mensajes

Iniciado por Genkidan, 11 Abril 2012, 09:03 AM

0 Miembros y 1 Visitante están viendo este tema.

Genkidan

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.

Elemental Code

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 :)

I CODE FOR $$$
Programo por $$$
Hago tareas, trabajos para la facultad, lo que sea en VB6.0

Mis programas

rembolso

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"))

Karcrack

Como ya han resuelto tu duda sólo me pondré tiquismiquis y añadiré estos dos puntos:

  • Tu duda es con .NET (VB > 6 es ya .NET). Así que está en la sección equivocada.
  • "encriptador" no es equivalente a "encryptor" del inglés, sería aquél que mete cosas en una cripta :xD. Por lo tanto el término correcto es "cifrador", y no "encriptador".

Saludos.

Genkidan

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?