Foro de elhacker.net

Programación => .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.

Código:
abcde

Código:
1|2|3|4|5

Un ejemplo mas complejo:

Código:
lale

Código:
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
  1. 'Code by Rembolso
  2. ' usando step y optimizando codigo
  3. Const Minus As String = "abcdefghijklmnñopqrstuvwxyz"
  4. Private Function EncriStep(Datos As String)
  5. Dim i, Buff As String
  6.  
  7. For i = 1 To Len(Datos)
  8. If InStr(1, Minus, Mid(Datos, i, 1)) <= 9 Then
  9. Buff = Buff & "0" & InStr(1, Minus, Mid(Datos, i, 1))
  10. Else
  11. Buff = Buff & InStr(1, Minus, Mid(Datos, i, 1))
  12. End If
  13. Next i
  14. EncriStep = Buff
  15. End Function
  16. Private Function DescipStep(Datos As String)
  17. Dim i, Buff As String
  18.  
  19. For i = 1 To Len(Datos) Step 2
  20. If InStr(1, Mid(Datos, i, 2), "0") = 1 Then
  21. Buff = Buff & Mid(Minus, Replace(Mid(Datos, i, 2), 0, ""), 1)
  22. Else
  23. Buff = Buff & Mid(Minus, Mid(Datos, i, 2), 1)
  24. End If
  25. Next i
  26. DescipStep = Buff
  27. End Function
  28. 'ejemplo con msgbox
  29. msgbox  EncriStep("abcdefgho")
  30. MsgBox DescipStep(EncriStep("abcdefgho"))
  31.  


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:
  • 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.


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?