Foros del Web » Programación para mayores de 30 ;) » .NET »

Encriptación de string en VB.net para C#

Estas en el tema de Encriptación de string en VB.net para C# en el foro de .NET en Foros del Web. Hola, en el proyecto donde estoy trabajando existe un sistema hecho en VB.net que posee un algoritmo de encriptación para guardar passwords. En el módulo ...
  #1 (permalink)  
Antiguo 29/04/2011, 13:51
Avatar de huenupan  
Fecha de Ingreso: noviembre-2007
Ubicación: Temuco - Chile
Mensajes: 48
Antigüedad: 16 años, 4 meses
Puntos: 3
Pregunta Encriptación de string en VB.net para C#

Hola, en el proyecto donde estoy trabajando existe un sistema hecho en VB.net que posee un algoritmo de encriptación para guardar passwords. En el módulo donde yo estoy trabajando es en C#, y llegó el momento de validar los usuarios. tengo el método que encripta las passwords en VB.net, pero no he podido traspasarla a C#

Código:
    Function Encripta(ByVal Pass As String) As String
        Dim Clave As String, i As Integer, Pass2 As String
        Dim CAR As String, Codigo As String
        Clave = "!"#$%&"
        Pass2 = ""
        For i = 1 To Len(Pass)
            CAR = Mid(Pass, i, 1)
            Codigo = Mid(Clave, ((i - 1) Mod Len(Clave)) + 1, 1)
            Pass2 = Pass2 & Right("0" & Hex(Asc(Codigo) Xor Asc(CAR)), 2)
        Next i
        Encripta = Pass2
    End Function
La línea que no me queda claro como funciona es:

Pass2 = Pass2 & Right("0" & Hex(Asc(Codigo) Xor Asc(CAR)), 2)

pues existe un operador Xor entre 2 strings y luego este resultado se convierte a hexadecimal ¿?

¿alguien me ayuda a convertirlo a C#?

Gracias, un saludo
  #2 (permalink)  
Antiguo 30/04/2011, 07:51
Avatar de Carlojas  
Fecha de Ingreso: junio-2007
Ubicación: Shikasta
Mensajes: 1.272
Antigüedad: 16 años, 10 meses
Puntos: 49
Respuesta: Encriptación de string en VB.net para C#

Que tal huenupan, puedes utilizar el siguiente link para convertir tu código VB a C#
Convertir de Visual Basic .NET a C#


Saludos.
__________________
"SELECT * FROM Mujeres WHERE situacion NOT IN ('CASADAS','CON HIJOS','ATORMENTADAS','CUASI-ENNOVIADAS') AND personalidad <> 'INTENSA'"
  #3 (permalink)  
Antiguo 02/05/2011, 06:26
Avatar de huenupan  
Fecha de Ingreso: noviembre-2007
Ubicación: Temuco - Chile
Mensajes: 48
Antigüedad: 16 años, 4 meses
Puntos: 3
Respuesta: Encriptación de string en VB.net para C#

Hola Carlojas, no consigo los resultados esperados. He trabajado en el código y pude llegar a esto, pero sigue sin hacer lo mismo que en vb.NET

Código:

    private string Encripta(string password)
    {
        string clave = "!"#$%&", pass2 = "", CAR, Codigo;
       

        for (int i = 0; i < password.Length; i++)
        {
            CAR = password.Substring(i, 1);
            Codigo = clave.Substring((i - 1) % clave.Length +1, 1);
            string valor = ("0" + Hex(Codigo) + Asc(CAR).ToString());
            pass2 = pass2 + (valor).Substring(valor.Length - 2, 2);
        }
       
        return pass2;

    }

    public string Hex(string asciiString)
    {
        string hex = "";
        foreach (char c in asciiString)
        {
            int tmp = c;
            hex += String.Format("{0:x2}", (uint)System.Convert.ToUInt32(tmp.ToString()));
        }
        return hex;
    }

    public static int Asc(string s)
    {
        return Encoding.ASCII.GetBytes(s)[0];
    }
la parte que no puedo resolver es donde dice

"Hex(Codigo) + Asc(CAR)"

que debiera ser

Right("0" & Hex(Asc(Codigo) Xor Asc(CAR)), 2)


gracias, un saludo

Última edición por huenupan; 02/05/2011 a las 07:03
  #4 (permalink)  
Antiguo 02/05/2011, 09:11
Avatar de huenupan  
Fecha de Ingreso: noviembre-2007
Ubicación: Temuco - Chile
Mensajes: 48
Antigüedad: 16 años, 4 meses
Puntos: 3
Respuesta: Encriptación de string en VB.net para C#

Ya lo he resuelto. No era tan trivial como colocar el código en un traductor de código a otro lenguaje. Hex y Asc no existen en C# y se debe obtener de otra forma el número ASCII al igual que el Hexadecimal. El operador Xor todavía no lo entiendo mucho (sé que es el operador excluyente, que retorna V sólo si el valor 1 ó el valor 2 son distintos) pero su equivalente en C# es el tongo (^).

Por si alguien lo necesita, este método para encriptar está en muchas webs, pero sólo en VB.net. Aquí está en C#

Código:
    private string Encripta(string password)
    {
        string clave = "!"#$%&", pass2 = "", CAR, Codigo;
       

        for (int i = 0; i < password.Length; i++)
        {
            CAR = password.Substring(i, 1);
            Codigo = clave.Substring((i - 1) % clave.Length +1, 1);
            string valor = ("0" + (Asc(Codigo) ^ Asc(CAR)).ToString("X"));
            pass2 = pass2 + (valor).Substring(valor.Length - 2, 2);
        }
       
        return pass2;
    }

    public static int Asc(string s)
    {
        return Encoding.ASCII.GetBytes(s)[0];
    }

saludos

Etiquetas: c#, encriptacion
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 00:40.