Problema al traducir código de jvscript a c#

Iniciado por ^^DarK MouL^^, 27 Marzo 2010, 16:03 PM

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

^^DarK MouL^^

Buenas, he intentado pasar un código de jvscript  a c# pero me he topado con un par de problemitas los cuales la mayoría pude resolver hasta cierto punto ^^ ... basicamente me trabe y no se como seguir.

El código en cuestion es este:

function cogecifrado(str)
{
   if (str.indexOf('PWD=', 0) == -1 ||str.length-37<0)
     alert("ENTRADA NO VALIDA: Debe introducir la línea completa, incluido 'PWD='");
   else
    {
       passw=str.substring(37,str.length);
       for (var i = 0; i<passw.length/2; i++)
       {
         var caracter=passw.substring(i*2,i*2+2);
         var sal=str.substring(5+i,6+i);
         var claro=parseInt("0x"+caracter) -i -1 - ((47+parseInt("0x"+sal))%57);
         document.form1.text2.value=document.form1.text2.value+String.fromCharCode(claro);
       }
    }
}


Y el código pasado a C#


public string descifrado(string str)
       {
           if (str != null)
           {
               string cracked = null;
               int len = str.Length;
               if ((str.IndexOf("PWD=", 0) == -1) || (len - 37 <= 0))
                   descifrado = "ENTRADA NO VALIDA: Debe introducir la línea completa, incluido 'PWD='";
               else
               {
                   string passw = str.Substring(37, (len-37));
                   for (var i = 0; i < passw.Length / 2; i++)
                   {
                       string caracter = passw.Substring(i * 2, i * 2 + 2);
                       string sal = str.Substring(5 + i, 6 + i);
                       int claro = Int32.Parse("0x" + caracter) - i - 1 - ((47 + Int32.Parse("0x" + sal)) % 57);
                       descifrado += System.Convert.ToString(claro);
                   }
               }
               return descifrado;
           }
           else
           {
               return null;
           }
       }


El problema está en el Int32.Parse me devuelve un error "La cadena de entrada no tiene el formato correcto" , lo que yo entiendo del código jvscript es que le pasa un código en hexa y lo convierte en entero y bueno despues hará las operaciones necesarias.

Ahora lo que pense es que jvscript capaz que interpreta el hexa directamente aunque este en un string y el c# no, a ustedes que les parece? si me pueden ayudar se los agradezco

Estoy usando Microsoft Visual C# 2008

raul338

no se si sera el unico error, pero el parse tiene un segundo parametro, usa

Código (csharp) [Seleccionar]

int32.parse(caracter, NumericStyles.Hexadecimal); // o algo asi, no soy el msdn ¬¬"


espero que te sirva

^^DarK MouL^^

Gracias raul338.

Ya pude solucionar ese error modificando un par de cosas (ahora igual me tira otros que ire tratando de solucionar ^^) el problema fue que yo le agregaba al string el '0x' del hexa el cual no se debe poner cuando haces el int.parse , se utiliza la sintaxis :

int a = int.Parse("3AAAA59B", NumberStyles.AllowHexSpecifier);

Se debe agregar la librería System.Numeric

raul338

sip, no dije nada pero como viste, yo no lo puse :) Cualquier cosa estamos para ayudarte