Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá gente,
Seguinte tenho a seguinte função em delphi preciso converte-la para c#.
function Codifica(Const Str1: String): String;
var Mascara, Str2: String;
PonM, PonS: Byte;
begin
Mascara := '#$%$'#13#12;
Str2 := '';
PonM := 1;
For PonS := 1 To Length(Str1) Do
Begin
AppendStr(Str2, Chr(Ord(Str1[PonS]) Xor Ord(Mascara[PonM])));
Inc(PonM);
If PonM = Length(Mascara) Then
PonM := 1;
End;
Result := Str2;
end;
Como fazer isso?
flws.
Algumas funções são simples, como o for que eu estou vendo ai, outras são mais complexas de tentar entender, se você dizer mais ou menos o que ele faz a gente talvez possa ajudar
quase lá, segue codigo:
public string Codifica2(string str)
{
System.Text.StringBuilder strText2 = new System.Text.StringBuilder();
string Mascara = "'#$%$'#13#12";
int PonM = 1;
for (int i = 0; i < str.Length; i++)
{
strText2.Append(Convert.ToChar((int)str[i] ^ (int)Mascara[PonM]));
PonM++;
if (PonM == Mascara.Length)
{
PonM = 1;
}
}
return strText2.ToString();
}
Codifica2("BONON") resultado = akkki mas deveria ser akkkC
Codifica2("NASS") resultado = mevw correto
Senha com até 4 caracteres são decodificadas ser erro,
mas com 5 ou mais caracteres decodifica diferente da que está no banco.
Ainda não conseguir resolver isso!!!!
Você já tentou colocar breakpoints?
Já tentei sim, mas não achei o problema.
Agora está assim:
public static string Codifica(string value)
{
value = value.Trim();
System.Text.StringBuilder encryptedValue = new System.Text.StringBuilder();
//string Mascara = "'#$%$'#13#12";
string Mascara = "'#$%$-##13#12";
int PonM = 1;
foreach (char character in value)
{
int charCode = (int)character;
int charMask = (int)Mascara[PonM];
char encrypedChar = (char)(charCode ^ charMask);
PonM++;
if (PonM == Mascara.Length)
{
PonM = 1;
}
encryptedValue.Append(encrypedChar.ToString());
}
return encryptedValue.ToString();
}
Codifica("VICTOR") resultado = umfpbq mas deveria ser umfpBq
Codifica("silvIo") resultado = PMIRdL mas deveria ser PMIRDL
A questão é que não está fazendo o upper no caracter.
flws...
Resolvido a mascara estca incorreta:
public static string Codifica(string value)
{
value = value.Trim();
System.Text.StringBuilder encryptedValue = new System.Text.StringBuilder();
string Mascara = "#$%$" + (char)13 + (char)12;
int PonM = 0;
foreach (char character in value)
{
int charCode = (int)character;
int charMask = (int)Mascara[PonM];
char encrypedChar = (char)(charCode ^ charMask);
PonM++;
if (PonM == Mascara.Length-1)
{
PonM = 0;
}
encryptedValue.Append(encrypedChar.ToString());
}
return encryptedValue.ToString();
}
Codifica("VICTOR") resultado = umfpbq
Difícil. Já tentou procurar algum conversor de "Delphi to C#"