Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Text verschlüsseln Windows + Android (https://www.delphipraxis.net/203099-text-verschluesseln-windows-android.html)

Luckie 15. Jan 2020 00:38

AW: Text verschlüsseln Windows + Android
 
Dann habe ich das überlesen.

DeddyH 15. Jan 2020 06:34

AW: Text verschlüsseln Windows + Android
 
Könnte man nicht auch auf High(String) und Low(String) zurückgreifen, das würde die Compilerdirektiven sparen?

philipp.hofmann 15. Jan 2020 08:50

AW: Text verschlüsseln Windows + Android
 
Also ich verstehe die Funktion von low und high anders. Aber kann man ja einfach ausprobieren.

DeddyH 15. Jan 2020 10:03

AW: Text verschlüsseln Windows + Android
 
Bei mir gibt (unter Windows) Low('Hallo') 1 und High('Hallo') 5 aus, das passt also schon einmal. FMX auf mobilen Plattformen muss aber jemand anderes ausprobieren, ich benutze das schon lange nicht mehr.

Rollo62 15. Jan 2020 17:33

AW: Text verschlüsseln Windows + Android
 
Zitat:

Zitat von philipp.hofmann (Beitrag 1455180)
Also ich verstehe die Funktion von low und high anders. Aber kann man ja einfach ausprobieren.

Keine Sorge, ist genau dafür gemacht.
http://docwiki.embarcadero.com/RADSt...ex_of_a_String

philipp.hofmann 15. Jan 2020 18:36

AW: Text verschlüsseln Windows + Android
 
Ok, dann lautet der vereinfachte Code folgendermaßen:

Delphi-Quellcode:
unit Crypt;

interface

uses SysUtils;

  function Encrypt (const s: String; Key: Word) : string;
  function Decrypt (const s: string; Key: Word) : string;

implementation

const CKEY1 = 53761;
      CKEY2 = 32618;

function Encrypt(const S :String; Key: Word): String;
var  i         :Integer;
      RStr      :RawByteString;
      RStrB     :TBytes Absolute RStr;
begin
  Result:= '';
  RStr:= UTF8Encode(S);
  for i := 0 to Length(RStr)-1 do begin
    RStrB[i] := RStrB[i] xor (Key shr 8);
    Key := (RStrB[i] + Key) * CKEY1 + CKEY2;
  end;
  for i := 0 to Length(RStr)-1 do begin
    Result:= Result + IntToHex(RStrB[i], 2);
  end;
end;

function Decrypt(const S: String; Key: Word): String;
var  i, tmpKey :Integer;
      RStr      :RawByteString;
      RStrB     :TBytes Absolute RStr;
      tmpStr    :String;
begin
  tmpStr:= UpperCase(S);
  SetLength(RStr, Length(tmpStr) div 2);
  i:=low(tmpStr);
  try
    while (i<=high(tmpStr)) do
    begin
      RStrB[i div 2]:= StrToInt('$' + tmpStr[i] + tmpStr[i+1]);
      Inc(i, 2);
    end;
  except
    Result:= '';
    Exit;
  end;
  for i := 0 to Length(RStr)-1 do
  begin
    tmpKey:= RStrB[i];
    RStrB[i] := RStrB[i] xor (Key shr 8);
    Key := (tmpKey + Key) * CKEY1 + CKEY2;
  end;
  Result:=UTF8ToString(RStr);
end;

end.

Luckie 15. Jan 2020 18:43

AW: Text verschlüsseln Windows + Android
 
Und der Code funktioniert?

Dir ist aber dass xor keine starke Verschlüsselung ist? Fpr jemand, der ernsthaft an die Daten gelangen will, ist das keine Hürde.

philipp.hofmann 15. Jan 2020 19:19

AW: Text verschlüsseln Windows + Android
 
Der Code funktioniert, j. Das dies keine starke Verschlüsselung ist, sollte klar sein, es ging aber zunächst ja einmal darum die vorhandene Implementierung des TE zu fixen. Für stärkere Verschlüsselungen sind hier auch Beispiele genannt worden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:50 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz