Einzelnen Beitrag anzeigen

Benutzerbild von Björn Ole
Björn Ole

Registriert seit: 11. Jul 2008
166 Beiträge
 
Delphi XE Professional
 
#12

AW: Text entschlüsseln, Algorithmus nur teilweise bekannt

  Alt 22. Feb 2011, 13:24
Hast du denn das Passwort?
Ja, wie im ersten Posting angegeben. Ich habe das Programm installiert und ein paar Testverschlüsselungen gemacht, um auf die Struktur zu kommen.
Wenn ja dann benutz doch einfach das besagte Programm, das ist doch Freeware.
Das versuche ich zu vermeiden. Es geht hier auch allein um die Entschlüsselung, ich werde sicherlich nicht nach diesem Schema verschlüsseln.
Welchen Sinn macht es das nachzubauen.
Ich würde gerne einige Texte automatisiert entschlüsseln, und da ich mich ungern mit dieser Software weiter befassen mag (hat himitsu schon alles zu gesagt ), hatte ich gehofft, dass sich das nachbauen lässt. Sollte es möglich sein, wird eventuell über einen besseren Weg nachgedacht, die Daten verschlüsselt abzulegen, aber das ist noch weit weg.


Ich habe jetzt mittels DEC folgendes zusammengebastelt:
Delphi-Quellcode:
uses DECUtil, DECCipher, DECHash, DECFmt;

function Decode: string;
const
  PASS = 'GEHEIM';
  DATA = 'FC343FC9164CE283FC08C9A12EEEBB26A3E0E31C5C4909A130BD075A730F6BD2336C6F329BAA84E8F9AE531EC2CF8B75E882420BC792CB351860CD7276FF149E4080';
  WAS_IST_DAS = '5590';
  SALT = 'tBuSGDvX7y5+3vorzrFiK1rAU8rO1X2Jg6Do8Q0mwMo=';
  AKDFIndex: LongWord = 1;
var
  APass: Binary;
  ASalt: Binary;
  AData: Binary;
  ALen: Integer;
begin
  with TCipher_Rijndael.Create, Context do
  begin
    try
      ASalt := TFormat_MIME64.Decode(SALT);
      SetLength(ASalt, 16); // brauch ich das?

      APass := PASS;
      APass := THash_SHA256.KDFx(APass[1], Length(APass) * SizeOf(APass[1]), ASalt[1], Length(ASalt), KeySize, TFormat_Copy, AKDFIndex); // was macht KDFx()?

      AData := TFormat_HEX.Decode(DATA);
      ALen := Length(AData);

      Mode := cmCBCx; { Möglichkeiten: cmCTSx, cmCBCx, cmCFB8, cmCFBx, cmOFB8, cmOFBx, cmCFS8, cmCFSx, cmECBx }
      Init(APass);
      SetLength(Result, ALen div SizeOf(AData[1]));
      Decode(AData[1], Result[1], ALen);
    finally
      Free;
      ProtectBinary(ASalt);
      ProtectBinary(AData);
      ProtectBinary(APass);
    end;
  end;
end;
Hier kommt wie erwartet nur Müll bei raus, daher hoffe ich auf ein paar Tipps, wo Fehler liegen könnten.
  Mit Zitat antworten Zitat