AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Rijndael decrypt mit Passwort & IV als Passphrase
Thema durchsuchen
Ansicht
Themen-Optionen

Rijndael decrypt mit Passwort & IV als Passphrase

Ein Thema von totti14 · begonnen am 23. Feb 2018 · letzter Beitrag vom 24. Feb 2018
Antwort Antwort
totti14

Registriert seit: 26. Mai 2005
Ort: Bremen
90 Beiträge
 
Delphi 10.3 Rio
 
#1

Rijndael decrypt mit Passwort & IV als Passphrase

  Alt 23. Feb 2018, 19:21
Hallo,
ich versuche gerade einen Block mit TDCP_Rijndael zu entpacken aber ich habe den Key & IV als String.
In den C Rijndael's gibt es dort ein MakeKey(...
Hat jemand einen Tip wie das hier gemacht wird ?

Ich kann ja wahrscheinlich den Key&IV als String nicht so übergeben ?

Danke

Delphi-Quellcode:

var
  Cipher : TDCP_Rijndael;
begin
  Cipher := TDCP_Rijndael.Create(nil);
  try
    Cipher.MakeKey('Key16_123456789!','Vector16_1234567',16,16); <<<< ???

    Cipher.Init(aKey, Length(aKey)*8, aPVector);
    Cipher.CipherMode := cmEBC;
    Cipher.DecryptStream(aInData, aOutData, aInData.Size);

Geändert von totti14 (23. Feb 2018 um 19:24 Uhr)
  Mit Zitat antworten Zitat
gammatester

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

AW: Rijndael decrypt mit Passwort & IV als Passphrase

  Alt 23. Feb 2018, 19:45
Hallo,
ich versuche gerade einen Block mit TDCP_Rijndael zu entpacken aber ich habe den Key & IV als String.
In den C Rijndael's gibt es dort ein MakeKey(...
Hat jemand einen Tip wie das hier gemacht wird ?
Delphi-Quellcode:
//
    Cipher.MakeKey('Key16_123456789!','Vector16_1234567',16,16); <<<< ???

    Cipher.Init(aKey, Length(aKey)*8, aPVector);
    Cipher.CipherMode := cmEBC;
In welchen C Rijndael's? Gib das doch als Vorlage hier an. Mit den gezeigten Werten vermute ich Blockgröße 16, 128-Bit Schüssel: also eigentlich AES-128. Allerdings gibt es keinen EBC-Modus sondern ECB, der ist aber nicht empfehlenswert und hat keinen IV.

Makekey erweckt die Vorstellung, daß aus einer Passwort-Phrase ein Schlüssel erstellt werden soll: Welche KDF wird in C verwendet? Allerdings könnten die 16 Zeichen/Bytes eines Ansi-Strings auch direkt als Schlüssel verwendet werden. Sicherheitshalber sollte der Schüssel aber als Bytes vorliegen, sonst gibt es eventuell Problem mit 2-Byte-Unicode-Strings.
  Mit Zitat antworten Zitat
totti14

Registriert seit: 26. Mai 2005
Ort: Bremen
90 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: Rijndael decrypt mit Passwort & IV als Passphrase

  Alt 23. Feb 2018, 19:53
Hallo gammatester,

das war die C Funktion dazu.

Code:
//Expand a user-supplied key material into a session key.
// key       - The 128/192/256-bit user-key to use.
// chain     - initial chain block for CBC and CFB modes.
// keylength - 16, 24 or 32 bytes
// blockSize - The block size in bytes of this Rijndael (16, 24 or 32 bytes).
void CRijndael::MakeKey(char const* key, char const* chain, int keylength, int blockSize)
Der falsche Mode ist da aus einen Copy&Paste reingerutscht
  Mit Zitat antworten Zitat
gammatester

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

AW: Rijndael decrypt mit Passwort & IV als Passphrase

  Alt 23. Feb 2018, 20:34
OK, nehmen wird an, das ECB mit 128-Bit key vorliegt, dann sollte
es ungefähr so gehen
Delphi-Quellcode:
var
  AES: TDCP_rijndael;

const
  key128: array[0..15] of Ansichar = 'Key16_123456789!';
var
  plain,ct: array[0..15] of byte
...
  AES.Init(key128,128,nil);
  AES.EncryptECB(plain,ct);
Das Problem mit DCPCrypt (so wie ich es kenne, zB dcpcrypt2-2010.zip) ist, daß EncryptECB nur einen 16-Byte-Block akzeptiert. Du mußt also in einer Schleife entschlüsseln.

Zu Testen kannst Du zB http://jacquelin.potier.free.fr/CryptoStuff/ hernehmen. Wenn's dann wirklich ECB ist kannst Du auch meine AES-Routinen http://www.wolfgang-ehrhardt.de/crypt_de.html#AES verwenden.
  Mit Zitat antworten Zitat
totti14

Registriert seit: 26. Mai 2005
Ort: Bremen
90 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: Rijndael decrypt mit Passwort & IV als Passphrase

  Alt 23. Feb 2018, 20:44
Mode ist CBC und dann a' 64 Byte Blöcke.
Das entpacken usw bekomme ich ja noch hin aber ich habe keine Ahnung von der Initialisierung mit den beiden String.

Hier ist mal ein Beispiel von der C Unit

https://www.codeproject.com/Articles...ncryption-Decr

Das CryptoTool ist ja sehr schön. Kannte ich gar nicht.
Damit hat das AES entpacken funktioniert wenn ich dort meine beiden Strings unter Key & IV eingebe.

Geändert von totti14 (23. Feb 2018 um 20:50 Uhr)
  Mit Zitat antworten Zitat
gammatester

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

AW: Rijndael decrypt mit Passwort & IV als Passphrase

  Alt 23. Feb 2018, 21:14
Hier ein volständiges Programm analog zu C mit Ver- und Entschlüssseln (ich benutze Deinem IV in C hat man 16 0-Bytes).
Delphi-Quellcode:
program T_DCP;

{$apptype console}

uses
  SysUtils,
  Classes,
  DCPcrypt2,
  DCPblockciphers,
  DCPrijndael;

var
  AES: TDCP_rijndael;

var
  sm_chain0: array[0..15] of Ansichar = 'Vector16_1234567';
  key: array[0..15] of Ansichar = '1234567890123456';
  szDataIn1: array[0..47] of Ansichar = 'ababababccccccccababababccccccccababababcccccccc';

procedure TestCBCDP;
var
  i: integer;
var
  tmp,szDataOut: array[0..47] of Ansichar;
begin
  //fillchar(sm_chain0, sizeof(sm_chain0), 0);
  //Verschlüsseln
  AES.CipherMode := cmCBC;
  AES.Init(key,128,@sm_chain0);
  AES.EncryptCBC(szDataIn1,szDataOut,sizeof(szDataIn1));
  writeln('Verschuesseln: ');
  writeln(szDataOut);

  //Entschlüsseln
  AES.CipherMode := cmCBC;
  AES.Init(key,128,@sm_chain0);
  AES.DecryptCBC(szDataOut,tmp,sizeof(szDataIn1));
  writeln('Ver + Entschuesseln: ',tmp);
end;

begin
  AES := TDCP_rijndael.Create(nil);
  TestCBCDP;
end.
Und das Ergebnis
Code:
C:\TMP\yy>T_DCP.exe
Verschuesseln:
à¤&#9484;é&#9524;&#9568;7}Ê©&#9604;ÒáÁ¬, 3{&#9488;Wf&#9556;&#9827;&#9571;[G&#9786;
Ver + Entschuesseln: ababababccccccccababababccccccccababababcccccccc
  Mit Zitat antworten Zitat
totti14

Registriert seit: 26. Mai 2005
Ort: Bremen
90 Beiträge
 
Delphi 10.3 Rio
 
#7

AW: Rijndael decrypt mit Passwort & IV als Passphrase

  Alt 24. Feb 2018, 10:52
Danke gammatester funzt perfekt.
  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 18:21 Uhr.
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