El código en cuestion es este:
Código:
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#
Código:
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