Как я могу преобразовать эту функцию шифрования XOR из Delphi в C #?

Следующая процедура Delphi возникла из давней публикации CompuServe и используется для шифрования различной информации в нашей базе данных. Ниже представлены обе версии Delphi 2007 и (благодаря некоторой помощи SO с различиями Unicode) версии Delphi XE.

Мы пытались преобразовать это в C #, и получили что-то похожее, но где-то нам что-то не хватает. К сожалению, наш парень из Delphi ( me) не знает C #, а специалист по C # - новичок в Delphi. C # (похоже) не имеет концепции AnsiString, поэтому решение, вероятно, будет включать в себя массивы байтов или символов?

Мы были бы очень признательны любая помощь в преобразовании этого кода в C #.

Версия Delphi 2007 (ASCII)

function EncodeDecode(Str: string): string;
const
  Hash: string = '^%12hDVjED1~~#29afdmSD`6ZvUY@hbkDBC3fn7Y7euF|R7934093*7a-|-  Q`';
var
  I: Integer;
begin
  for I := 1 to Length (Str) do
    Str[I] := chr (ord (Str[I]) xor not (ord (Hash[I mod Length (Hash) + 1])));
  Result := Str;
end;

Версия Delphi XE (Unicode)

function TfrmMain.EncodeDecode(Str: AnsiString): AnsiString;
const
  Hash: string = '^%12hDVjED1~~#29afdmSD`6ZvUY@hbkDBC3fn7Y7euF|R7934093*7a-|-  Q`';
var
  I: Integer;
begin
  Result := Str;
  for I := 1 to Length (Result) do
    Result[I] := AnsiChar (ord (Result[I]) xor not (Ord (Hash[I mod Length (Hash) + 1])));
end;
8
задан Paŭlo Ebermann 22 August 2011 в 23:50
поделиться