AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Text verschlüsseln Windows + Android

Ein Thema von gee21 · begonnen am 13. Jan 2020 · letzter Beitrag vom 15. Jan 2020
Antwort Antwort
Seite 1 von 2  1 2   
gee21

Registriert seit: 3. Jan 2013
173 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

Text verschlüsseln Windows + Android

  Alt 13. Jan 2020, 18:27
Guten Abend

ich habe mal vor längerem eine code im internet gefunden der text verschlüsselt und entschlüsselt. (Ist nicht von mir)
auf windows10 funktioniert der nach wie vor. aber in android (firemonkey) krieg ich das nicht zum laufen.

ich schaffe es zwar den text auf android korrekt zu verschlüsseln. habe bei gleichem text / gleichem schlüssel die gleichen chifre wie auch dem pc.
aber beim entschlüsseln funktioniert es mit android nicht. der ausgabetext ist einfach leer.

Weiss jemand was man machen muss damit dieser code auf beiden Plattformen funktioniert? (Windows / Android)
oder hat jemand einen einfacheren / besseren code als dieser?


Damit RawByteString in android funktioniert habe ich dieses packet installert. (evt liegt auch hier das problem?)
https://github.com/delphilite/System.ByteStrings

Delphi-Quellcode:
const CKEY1 = 53761;
CKEY2 = 32618;

function EncryptStr(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 DecryptStr(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:= 1;
  try
    while (i < Length(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:= UTF8Decode(RStr);
end;
ich öffne / speichere es dann so:
die showmessages() habe ich nur zum testen da drin.

Delphi-Quellcode:
procedure jetztverschlüsselnundseichern;
var
i: integer;
begin
 pwdb.Clear;

 for I := 0 to pwdb2.Count-1 do pwdb.Add( EncryptStr(pwdb2.Strings[i], 223));

 pwdb.SaveToFile(GetHomePath + '/pwdb.txt');
 showmessage('gespeichert und verschlüsselt');
 end;
Delphi-Quellcode:
  
  pwdb.loadfromfile(GetHomePath + '/pwdb.txt');
  pwdb2.Clear;
    for I := 0 to pwdb.Count-1 do begin
     s:= DecryptStr(pwdb.Strings[i], 223);
     showmessage('before:'+pwdb.Strings[i]+' After:'+s);
     pwdb2.Add(s);
    end;
    showmessage('result nach entschlüsseln: '+ pwdb2.Text);
Robert

Geändert von gee21 (13. Jan 2020 um 18:47 Uhr)
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
969 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: Text verschlüsseln Windows + Android

  Alt 13. Jan 2020, 18:45
Hallo,

schau' dir doch mal die DEC an, ist zwar offiziell noch Alpha Status,
funktioniert aber und das auch unter Android. Kommt mit ettlichen Unit
Tests so diass das Funktionieren auch einigermaßen abgesichert ist.

Außerdem sind inzwischen auch mehrere Demo Programme, für Konsole
und FMX basiert dabei. Die Hash und Verschlüsselungsdemos sind auch auf Google Play
als "DEC hash demo" und "DEC cipher demo" zu finden und die hash demo ist auch schon
in 64-bit kompatibler Fassung in Google Play.

Herunterladen kann man es hier und es enthält auch ein englisches PDF manual:

https://github.com/winkelsdorf/Delph...tionCompendium
  Mit Zitat antworten Zitat
gee21

Registriert seit: 3. Jan 2013
173 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

AW: Text verschlüsseln Windows + Android

  Alt 13. Jan 2020, 18:55
Ohh vielen dank. ich werds mal versuchen... aber ich ziemlicher delphi noob

Wie installier ich das? komponente installieren? oder die daten ins delphi verzeichniss kopieren?
Robert
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie
(Moderator)

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

AW: Text verschlüsseln Windows + Android

  Alt 13. Jan 2020, 21:52
Liegt da keine Readme bei, in der das steht? Früher müsste man nur die Units ins Projekt einbinden. Die IDE muss sie also nur finden können.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
philipp.hofmann

Registriert seit: 21. Mär 2012
Ort: Hannover
344 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Text verschlüsseln Windows + Android

  Alt 13. Jan 2020, 21:52
Ganz, ganz wichtiger Unterschied in der String-Nutzung zwischen Windows/MacOS und iOS/Android:
Bei iOS und Android gilt string[0..len-1] und bei Windows/MacOS string[1..len]!

Ganz unten an der Basis und dann so unterschiedlich, kann nicht sagen, warum dies so ist.

Code:
unit Crypt;

interface

uses SysUtils, FMX.Dialogs;

  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:=1;
  try
    while (i<Length(tmpStr)) do
    begin
      {$IF Defined(ANDROID) or Defined(IOS)}
        RStrB[i div 2]:= StrToInt('$' + tmpStr[i-1] + tmpStr[i]);
      {$ELSE}
        RStrB[i div 2]:= StrToInt('$' + tmpStr[i] + tmpStr[i+1]);
      {$ENDIF}
      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.
  Mit Zitat antworten Zitat
EdAdvokat

Registriert seit: 1. Mai 2016
Ort: Berlin
260 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

AW: Text verschlüsseln Windows + Android

  Alt 14. Jan 2020, 13:32
Schau doch mal bei den Beispielen vom cn-pack http://www.cnpack.org/index.php?lang=en vorbei. Dort findest Du Beispiele mit einer AES-Verschlüsselung
und auch ein Beispiel mit RSA sowohl für VCL als auch für FMX. DEC ist natürlich auch sehr gut.
Norbert
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
969 Beiträge
 
Delphi 10.3 Rio
 
#7

AW: Text verschlüsseln Windows + Android

  Alt 14. Jan 2020, 20:46
Liegt da keine Readme bei, in der das steht? Früher müsste man nur die Units ins Projekt einbinden. Die IDE muss sie also nur finden können.
Im docs Ordner befindet sich eine mehrseitige englisch sprachige PDF Datei...
Und ja: die IDE muss die Units nur finden.
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
969 Beiträge
 
Delphi 10.3 Rio
 
#8

AW: Text verschlüsseln Windows + Android

  Alt 14. Jan 2020, 20:47
Ganz, ganz wichtiger Unterschied in der String-Nutzung zwischen Windows/MacOS und iOS/Android:
Bei iOS und Android gilt string[0..len-1] und bei Windows/MacOS string[1..len]!

Ganz unten an der Basis und dann so unterschiedlich, kann nicht sagen, warum dies so ist.
EMBT meinte, dass die mehrzahl aller Programmiersprachen 0-basiert wäre und es durch diese Änderung
Einsteigern/Umsteigern leichter wäre. Darüber kann man sich jetzt streiten.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie
(Moderator)

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#9

AW: Text verschlüsseln Windows + Android

  Alt 14. Jan 2020, 22:22
Aber wäre es nicht auch interessant den Code für beide Plattformen zum Laufen zu bringen?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
philipp.hofmann

Registriert seit: 21. Mär 2012
Ort: Hannover
344 Beiträge
 
Delphi 10.4 Sydney
 
#10

AW: Text verschlüsseln Windows + Android

  Alt 14. Jan 2020, 22:38
Genau dies habe ich doch in meinem Kommentar getan. Dort steht der Code, der sowohl für Desktop als auch für Mobile läuft, indem ein {$IFDEF-Part hinzukam, der die Ungleichheit "angleicht".
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:24 Uhr.
Powered by vBulletin® Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2020 by Daniel R. Wolf