AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Entschlüsselung PHP / Delphi

Ein Thema von DerNutzer · begonnen am 15. Jul 2020 · letzter Beitrag vom 16. Jul 2020
 
DerNutzer

Registriert seit: 14. Sep 2017
7 Beiträge
 
#1

Entschlüsselung PHP / Delphi

  Alt 15. Jul 2020, 11:23
Guten Tag,

ich habe gerade ein Problem wo ich nicht so richtig weiter komme, da ich nicht weiß, was ich tue.
Meine Aufgabe ist es, von einem Datenlogger die verschlüsselten Daten abzufragen und zu archivieren.

Und genau an der Verschlüsselung scheitere ich momentan.

Der Hersteller hat einen Pythoncode zur Verfügung gestellt um die Daten entschlüsseln zu können:

Code:
// originaler Herstellercode
==============================================================
def pad(data):
    length = 16 - (len(data) % 16)
    return data + chr(length)*length


def unpad(data):
    return data[:-ord(data[-1])]


def decodeMessage(msgb64):
    try:
        # first step decode base64
        msg = base64.b64decode(msgb64)

        # second step decode AES
        key = airqpass.encode('utf-8')
        if len(key) < 32:
            for i in range(32-len(key)):
                key += b'0'
        elif len(key) > 32:
            key = key[:32]
        cipher = AES.new(key=key, mode=AES.MODE_CBC, IV=msg[:16])
        return unpad(cipher.decrypt(msg[16:]).decode('utf-8'))
    except ValueError:
        return "Passwort falsch!"
    except Exception as e:
        print('Error - '+str(type(e))+' '+str(e))
Da ich jetzt kein ausgesprochener Verschlüsselungsexperte bin, habe ich ein wenig im Internet recheriert und verschiedene Lösungsansätze ausprobiert.
Der folgende Code schien mir noch am Sinnvollsten zu sein:

Code:
procedure Tform1.Decryption(str1 : ansistring);
var Cipher : TDCP_rijndael;
    Data, Key, IV : ansistring;
    index, dataLength, bsize, pad: integer;
begin

 data := DCPBase64.Base64DecodeStr(Str1);

  key := 'passwort';
  IV := copy(data,1,16);
  Data := copy(data,17,length(data));

  Cipher := TDCP_rijndael.Create(nil);
  try
    Cipher.Init(Key[1],128,@IV[1]);
    cipher.BlockSize := 16;
    //don't miss padding
    {start padding}
    dataLength := Length(Data);
    bsize := (Cipher.BlockSize div 8);
    pad := bsize - (dataLength mod bsize);
    for index := 1 to pad do
      Data := Data+chr(pad);
    {end padding}

    Cipher.decryptCBC(Data[1],Data[1],Length(Data));
  finally
    Cipher.Free;
  end;

  Memo_Plaintext.Lines.Add(Data);
end;
Leider kommt aber nie irgendein sinnvolles Ergebnis dabei heraus. Für Hilfestellungen bin ich echt dankbar, da ich schon eine geraume Zeit versuche dieses Problem zu lösen.
  Mit Zitat antworten Zitat
 

 

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 03:04 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz