für ein kleines Vier Gewinnt Multiplayerspiel nutze ich Blowfish um die Kommunikation zu verschlüsseln. Von Server zu Client und umgekehrt funktioniert das ganze (Beide in Pascal geschrieben). Nun möchte ich aber einen Bot in Python schreiben, gegen den man spielen kann. Wenn ich mit Python oder über https://webnet77.net/cgi-bin/helpers/blowfish.pl den String 'Hallo123' mit dem Schlüssel '01234567' verschlüssele, kommt beides mal das gleiche raus. Nur mit Lazarus kommt was anderes raus.
Der Schlüssel ändert sich natürlich bei jeder Sitzung, zu diesem Test verwende ich aber einen festen Key. Als Beispiel möchte ich den String 'Hallo123' verschlüsseln. Mit Lazarus sieht das ganze so aus:
Code: Alles auswählen
uses
  ..., BlowFish;
 
function EncryptString(const Key, s: String): String;
var
  StringStream: TStringStream;
begin
  if (Key <> '') and (s <> '') then begin
    try
      StringStream := TStringStream.Create('');
      try
        with TBlowFishEncryptStream.Create(Key, StringStream) do begin
          WriteAnsiString(s);
          Free;
        end;
        Result := StringStream.DataString;
      except
        Result := '';
      end;
    finally
      FreeAndNil(StringStream);
    end;
  end
  else Result := '';
end;
 
var
  Key, Encrypted: String;
  c: Char;
 
begin
  Key := '01234567';
  WriteLn(Key);
  Encrypted := EncryptString(Key, 'Hallo123');
  for c in Encrypted do begin
    Write('0x' + IntToHex(Ord(c), 2) + ' ');
  end;
  WriteLn;
  ReadLn;
end.Code: Alles auswählen
0xDB 0x40 0xD9 0x82 0xB0 0x7E 0x6A 0x87Code: Alles auswählen
0x9C 0x73 0x7C 0x5B 0xEA 0x7D 0x6A 0xC9 0xE5 0x9B 0x37 0x4E 0xC9 0xEE 0xE5 0x52
 Verein
Verein 
 Links
Links Suche
Suche