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 0x87
Code: Alles auswählen
0x9C 0x73 0x7C 0x5B 0xEA 0x7D 0x6A 0xC9 0xE5 0x9B 0x37 0x4E 0xC9 0xEE 0xE5 0x52