none
Código delphi para C# no Windows Phone RRS feed

  • Pergunta

  • olá...

    na minha aplicação Windows Phone C# é necessário fazer login no BD SQL Server, entretanto estou com dificuldade para descriptogravar a senha, que é gerada pelo Delphi,

    a função em delphi é a seguinte:

    function Teste(Valor: string): string;
    var
      Novo:  string[8];
      Chave: string[255];
      I, J: word;
    begin
      {Inicializa valores}
      Chave := '*&#@!';
      Novo  := Valor;
      I     := 1;
      J     := 1;
      while I < length(Novo) do
      begin
        Novo[I] := chr(round((ord(Novo[I]) + ord(Chave[J]) + (I * J + J)) / 2));
        inc(I);
        inc(J);
      end;
      result := string(Novo);
    end; {Teste}


    tentei converter para C# dessa forma:

            private string Teste(string Valor)
            {
                char[] Novo = new char[Valor.Length];
                char[] Chave = new char[255];
                int I, J;
                
                Chave[0] = 'a';
                Chave[1] = 'b';
                Chave[2] = 'c';
                Chave[3] = 'd';
                Chave[4] = 'e';
                Chave[5] = 'f';
                Chave[6] = 'g';
                Chave[7] = 'h';
    
                I= 0;
             
                while (I < Valor.Length)
                {
                    Novo[I] = Valor[I];
                    I++;
                }
                
                I = 0;
                J = 0;
                int val;
                while (I < Valor.Length)
                {
                    val = (((int) Novo[I] + (int)(Chave[J]) + (I * J + J)) / 2);
                    Novo[I] = (char) (Math.Round((decimal)(val))) ;
                    I++;
                    J++;
                }
                return  (String.Join("", Novo));
            }

    mas sem sucesso... o valor não é o mesmo do BD

    tentei criando uma DLL em Delphi e chamando no C#

    sendo a DLL no Delphi

    Function Teste(Valor: String) : String; stdcall; Export;
    var
      Novo:  string[8];
      Chave: string[255];
      I, J: word;
    begin
      {Inicializa valores}
      Chave := '*&#@!';
      Novo  := Valor;
      I     := 1;
      J     := 1;
      while I < length(Novo) do
      begin
        Novo[I] := chr(round((ord(Novo[I]) + ord(Chave[J]) + (I * J + J)) / 2));
        inc(I);
        inc(J);
      end;
      result := string(Novo);
    end; {Teste}
    
    Exports 
    Teste;

    e chamo no Visual Studio(em projeto Class Library): 

     [DllImport(@"DelphiDLL.dll")]
            static extern string Teste(string Valor);

    problema que os tipos de dados string do Delphi e C# são diferentes

    mas tudo sem conseguir ainda.. algum help para salvar??

    sexta-feira, 30 de novembro de 2012 16:50

Todas as Respostas

  • Amigo,

    pq você não usa uma outra função de criptografia?

    Tem que ser a do delphi mesmo?

    Existem milhares de funções em c# na internet, se quiser pesquiso e te envio algumas.

    Att,

    Paulo Rogério


    Paulo Rogério

    sexta-feira, 30 de novembro de 2012 17:43
  • Oi Paulo,
    Então, o sistema é desenvolvido em Delphi utilizando essa criptografia e salvando no BD SQL Server (formato string), eu pego a senha que foi gerada pelo sistema Delphi para logar na aplicação Phone.
    em ultimo caso poderia mudar toda criptografia(dados) no SQL Server de forma a ser compativel tanto na aplicação Delphi quanto no C# para criptografar/descriptografar, mas prefiro acreditar que é possível sem alterar no sistema em Delphi
    sexta-feira, 30 de novembro de 2012 18:46