AGB  ·  Datenschutz  ·  Impressum  







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

Passwort Entschlüsseln

Ein Thema von Movementroboter · begonnen am 30. Okt 2014 · letzter Beitrag vom 5. Nov 2014
Antwort Antwort
gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#1

AW: Passwort Entschlüsseln

  Alt 30. Okt 2014, 10:44
5. Padding ? was meinst du damit ?
Dein Link funktioniert bei mir nicht, hier der zum englischen Wiki http://en.wikipedia.org/wiki/Padding_%28cryptography%29

Hintergrund: AES verschlüsselt 128-Bit-Blöcke. Es gibt Betriebsmodi, die beliebige Bytemuster verabeiten können. Und solche die nur auf 16-Byte-Blöcken arbeiten (dies sind zB das einfache ECB oder das oft verwendete CBC), hier muß man dann irgendwie auf 16-Byte-Vielfache auffüllen, zB durch 0, oder die erwähnten Paddingmethoden.

Wenn nur 'U5r5klO0zwu674593' gegeben ist, wird man das normalerweise hashen, zB mit SHA1. Da SHA1 160-Bit hat, vermute ich das davon 128 Bit benutzt werden (die niedrigsten?, die höchsten?).

Aber wie gesagt, alles nur Vermutung.

Geändert von gammatester (30. Okt 2014 um 10:47 Uhr)
  Mit Zitat antworten Zitat
Movementroboter

Registriert seit: 30. Okt 2014
10 Beiträge
 
#2

AW: Passwort Entschlüsseln

  Alt 30. Okt 2014, 10:57
Kann es sein das U5r5klO0zwu674593 das Salz ist ?
  Mit Zitat antworten Zitat
gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#3

AW: Passwort Entschlüsseln

  Alt 30. Okt 2014, 11:10
Kann es sein das U5r5klO0zwu674593 das Salz ist ?
Kann sein, aber Du brauchst trotzdem einen Schlüssel (wenn wirklich verschlüsselt wird). Edit: Glaube eher nicht, da das Salz ja immer verschieden sein sollte, nicht nur ein einziges.

Wie schon man angedeutet, kann es aber auch sein, daß gar nicht verschlüsselt wird, sondern Salz und SHA1(passwort) gespeichert werden.

Ohne genaue Angaben, was eigentlich gemacht wird, hast Du kaum eine Chance. Kennst Du denn zumindest die Datenbankstruktur? Vielleicht kann man daraus etwas mehr Informationen ableiten.

Geändert von gammatester (30. Okt 2014 um 11:13 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: Passwort Entschlüsseln

  Alt 30. Okt 2014, 13:06
Wenn man einen Blick auf das DEC wirft
... habe mich ein bisschen mit dem Delphi Encryption Compendium 5 auseinander gesetzt.
dann sollte einem doch auch die Datei Example.txt ins Auge springen.

Und bis auf die Tatsache, dass dort mit with warum auch immer das Lesen und Verstehen des Codes erschwert wird, ist dort aber genau das enthalten, was hier benötigt wird.
Delphi-Quellcode:
var
  ACipherClass: TDECCipherClass = TCipher_Rijndael;
  ACipherMode: TCipherMode = cmCBCx;
  AHashClass: TDECHashClass = THash_Whirlpool;
  ATextFormat: TDECFormatClass = TFormat_Mime64;
  AKDFIndex: LongWord = 1;

function Encrypt( const AText: String; const APassword: String ): String; overload;
function Decrypt( const AText: String; const APassword: String ): String; overload;
Damit das Verstehen besser wird habe ich mal dieses with entfernt und die Parameter mit Kommentaren versehen.
Delphi-Quellcode:
program dp_182529;

{$APPTYPE CONSOLE}
{$R *.res}

uses
  System.SysUtils,
  DECUtil, DECCipher, DECHash, DECFmt;

var
  ACipherClass: TDECCipherClass = TCipher_Rijndael;
  ACipherMode: TCipherMode = cmCBCx;
  AHashClass: TDECHashClass = THash_Whirlpool;
  ATextFormat: TDECFormatClass = TFormat_Mime64;
  AKDFIndex: LongWord = 1;

function Encrypt( const AText: String; const APassword: String ): String;
var
  LSalt: Binary;
  LData: Binary;
  LPass: Binary;
  LCipher: TDECCipher;
begin
  LCipher := ValidCipher(
    { CipherClass } ACipherClass ).
  { > } Create;
  try
    LSalt := RandomBinary( 16 );
    LPass := ValidHash(
      { HashClass } AHashClass ).
    { > } KDFx(
      { Data } APassword[1],
      { DataSize } Length( APassword ) * SizeOf( APassword[1] ),
      { Seed } LSalt[1],
      { SeedSize } Length( LSalt ),
      { MaskSize } LCipher.Context.KeySize,
      { Format } TFormat_Copy,
      { Index } AKDFIndex );
    LCipher.Mode := ACipherMode;
    LCipher.Init( LPass );
    SetLength( LData, Length( AText ) * SizeOf( AText[1] ) );
    LCipher.Encode(
      { Source } AText[1],
      { Dest } LData[1],
      { DataSize } Length( LData ) );
    Result := ValidFormat(
      { FormatClass } ATextFormat ).
    { > } Encode(
      { Value } LSalt + LData + LCipher.CalcMAC );
  finally
    LCipher.Free;
    ProtectBinary( LSalt );
    ProtectBinary( LData );
    ProtectBinary( LPass );
  end;
end;

function Decrypt( const AText: String; const APassword: String ): String;
var
  LSalt: Binary;
  LData: Binary;
  LCheck: Binary;
  LPass: Binary;
  LLen: Integer;
  LCipher: TDECCipher;
begin
  LCipher := ValidCipher(
    { CipherClass } ACipherClass ).
  { > } Create;
  try
    LSalt := ValidFormat(
      { FormatClass } ATextFormat ).
    { > } Decode(
      { Value } AText );
    LLen := Length( LSalt ) - 16 - LCipher.Context.BufferSize;
    LData := System.Copy( LSalt, 17, LLen );
    LCheck := System.Copy( LSalt, LLen + 17, LCipher.Context.BufferSize );
    SetLength( LSalt, 16 );
    LPass := ValidHash(
      { HashClass } AHashClass ).
    { > } KDFx(
      { Data } APassword[1],
      { DataSize } Length( APassword ) * SizeOf( APassword[1] ),
      { Seed } LSalt[1],
      { SeedSize } Length( LSalt ),
      { MaskSize } LCipher.Context.KeySize,
      { Format } TFormat_Copy,
      { Index } AKDFIndex );
    LCipher.Mode := ACipherMode;
    LCipher.Init(
      { Key } LPass );
    SetLength( Result, LLen div SizeOf( AText[1] ) );
    LCipher.Decode(
      { Source } LData[1],
      { Dest } Result[1],
      { DataSize } LLen );
    if LCheck <> LCipher.CalcMAC
    then
      raise Exception.Create( 'Invalid data' );
  finally
    LCipher.Free;
    ProtectBinary( LSalt );
    ProtectBinary( LData );
    ProtectBinary( LCheck );
    ProtectBinary( LPass );
  end;
end;

procedure Main;
var
  LText: string;
  LPass: string;
begin
  LText := 'The quick brown fox jumps over the lazy dog';
  LPass := 'U5r5klO0zwu674593';

  Writeln( 'Encode Test: ', Encrypt( LText, LPass ) );
  Writeln( 'Decode Test: ', Decrypt( Encrypt( LText, LPass ), LPass ) );
end;

begin
  try
    Main;
  except
    on E: Exception do
      Writeln( E.ClassName, ': ', E.Message );
  end;
  ReadLn;

end.
Mit der Basis müsste man jetzt auch weiterkommen ...
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von cookie22
cookie22

Registriert seit: 28. Jun 2006
Ort: Düsseldorf
936 Beiträge
 
Delphi XE2 Professional
 
#5

AW: Passwort Entschlüsseln

  Alt 30. Okt 2014, 15:34
Die Angaben des Lehrers sind überhaupt nicht ausreichend.

Es wird weder angegeben, in welchem Modus verschlüsselt wird.

CBC, ECB, CTR, OCB, CFB oder was? Soll er das raten oder wie?

Wozu dient der Hash Algo? Wird er in einer KDF verwedet?

Wenn ja welche? KDFx oder KDF2?

Da zu raten ist völlige Zeitverschwendung. Der Lehrer muss sich klar ausdrücken und alle wichtigen Informationen liefern.
Gruß
Cookie
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#6

AW: Passwort Entschlüsseln

  Alt 31. Okt 2014, 07:23
-- Hier stand etwas persönliches, das man auch per PN übermitteln kann--
  Mit Zitat antworten Zitat
Insider2004
(Gast)

n/a Beiträge
 
#7

AW: Passwort Entschlüsseln

  Alt 2. Nov 2014, 11:36
Das ist ja wieder zum Kugeln! Kann es sein, dass Dein Lehrer etwas überfordert ist? Was soll das Ganze für ein Schmarrn sein? Was ist überhaupt das Lernziel?
  Mit Zitat antworten Zitat
Movementroboter

Registriert seit: 30. Okt 2014
10 Beiträge
 
#8

AW: Passwort Entschlüsseln

  Alt 4. Nov 2014, 14:40
Ich habe neue Informationen

Delphi-Quellcode:
ACipherClass: TDECCipherClass = TCipher_Rijndael;
  ACipherMode: TCipherMode = cmCBCx;
  AHashClass: TDECHashClass = THash_Whirlpool;
  ATextFormat: TDECFormatClass = TFormat_Mime64; //MIME64 = BASE64 ?
  AKDFIndex: LongWord = 1;
Padding = Hat er keine Ahnung von :evil:
APass := ValidHash(AHashClass).KDFx(APassword[1], Length(APassword) * SizeOf(APassword[1]), ASalt[1], Length(ASalt), KeySize, TFormat_Copy, AKDFIndex); Habe bereits nach der WhirlPool Library für Visual Studio geschaut aber ich glaube das was ich da gefunden habe ist nicht passend oder ?



Die Angaben des Lehrers sind überhaupt nicht ausreichend.

Es wird weder angegeben, in welchem Modus verschlüsselt wird.

CBC, ECB, CTR, OCB, CFB oder was? Soll er das raten oder wie?

Wozu dient der Hash Algo? Wird er in einer KDF verwedet?

Wenn ja welche? KDFx oder KDF2?

Da zu raten ist völlige Zeitverschwendung. Der Lehrer muss sich klar ausdrücken und alle wichtigen Informationen liefern.

Geändert von Movementroboter ( 4. Nov 2014 um 14:50 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#9

AW: Passwort Entschlüsseln

  Alt 4. Nov 2014, 14:47
Ich habe neue Informationen
Delphi-Quellcode:
ACipherClass: TDECCipherClass = TCipher_Rijndael;
ACipherMode: TCipherMode = cmCBCx;
AHashClass: TDECHashClass = THash_Whirlpool;
ATextFormat: TDECFormatClass = TFormat_Mime64;
AKDFIndex: LongWord = 1;
Na dann frisch ans Werk. Alles was du brauchst, steht hier im Thread.

BTW Es wäre sehr freundlich von dir, wenn du Quelltext auch in die Code-Tags packst.
Code:
[DELPHI]
// Hier jetzt DELPHI-Quelltext rein
[/DELPHI]
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Antwort Antwort


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 14:37 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