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