Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

dochipis

Converter para c#

Recommended Posts

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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!!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

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...

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.