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