AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi MemIniCrypt: Vollverschlüsseltes Arbeiten mit ini-Dateien - Kommentare erwünscht!
Thema durchsuchen
Ansicht
Themen-Optionen

MemIniCrypt: Vollverschlüsseltes Arbeiten mit ini-Dateien - Kommentare erwünscht!

Ein Thema von CodeX · begonnen am 17. Jan 2011 · letzter Beitrag vom 23. Jan 2011
Antwort Antwort
gammatester

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

AW: MemIniCrypt: Vollverschlüsseltes Arbeiten mit ini-Dateien - Kommentare erwünscht!

  Alt 18. Jan 2011, 20:33
Für den Initialsierungsvektor nimmst bei jedem Verschlüsseln ein Zufalls-16-Bytearray, und rufst AES.Init(key128,16,IV,16), danach AES.Encode(plain,ct,sizeof(plain)) auf. Dann schreibst Du den selbstverständlich unverschlüsselten IV und den Ciphertext ct in Deine INI (HEX oder Base64-kodiert, halt wie Du's jetzt auch schon kodierst).

Beim Entschlüsseln liest Du die kodierten IV, CT; decodierst, und rufst dann AES.Init(key128,16,IV,16), anschließend AES.Decode(ct,pt,sizeof(ct)) auf.

Hier eine Demo mit Testvektoren:
Delphi-Quellcode:
program t_AES_CBC;

{$apptype console}

uses
  SysUtils, Classes, DECCipher;

var
  AES: TCipher_Rijndael;

var
  key128 : array[0..15] of byte = ($2b,$7e,$15,$16,$28,$ae,$d2,$a6,
                                   $ab,$f7,$15,$88,$09,$cf,$4f,$3c);

      IV : array[0..15] of byte = ($00,$01,$02,$03,$04,$05,$06,$07,
                                   $08,$09,$0a,$0b,$0c,$0d,$0e,$0f);

  plain : array[0..63] of byte = ($6b,$c1,$be,$e2,$2e,$40,$9f,$96,
                                   $e9,$3d,$7e,$11,$73,$93,$17,$2a,
                                   $ae,$2d,$8a,$57,$1e,$03,$ac,$9c,
                                   $9e,$b7,$6f,$ac,$45,$af,$8e,$51,
                                   $30,$c8,$1c,$46,$a3,$5c,$e4,$11,
                                   $e5,$fb,$c1,$19,$1a,$0a,$52,$ef,
                                   $f6,$9f,$24,$45,$df,$4f,$9b,$17,
                                   $ad,$2b,$41,$7b,$e6,$6c,$37,$10);

  ct_cbc : array[0..63] of byte = ($76,$49,$ab,$ac,$81,$19,$b2,$46,
                                   $ce,$e9,$8e,$9b,$12,$e9,$19,$7d,
                                   $50,$86,$cb,$9b,$50,$72,$19,$ee,
                                   $95,$db,$11,$3a,$91,$76,$78,$b2,
                                   $73,$be,$d6,$b8,$e3,$c1,$74,$3b,
                                   $71,$16,$e6,$9e,$22,$22,$95,$16,
                                   $3f,$f1,$ca,$a1,$68,$1f,$ac,$09,
                                   $12,$0e,$ca,$30,$75,$86,$e1,$a7);


function test(px,py: pointer): string;
begin
  if CompareMem(px,py,64) then test := 'OKelse test := 'Error';
end;

var
  pt,ct: array[0..63] of byte;

begin
  AES := TCipher_Rijndael.Create;
  //Verschl³sseln
  AES.Mode := cmCBCx;
  AES.Init(key128,16,IV,16);
  AES.Encode(plain,ct,sizeof(plain));
  writeln('CBC test: ', test(@ct,@ct_cbc));
  //Entschl³sseln
  AES.Mode := cmCBCx;
  AES.Init(key128,16,IV,16);
  AES.Decode(ct,pt,sizeof(plain));
  writeln('CBC test: ', test(@pt,@plain));
end.
  Mit Zitat antworten Zitat
CodeX

Registriert seit: 30. Okt 2004
475 Beiträge
 
Delphi 12 Athens
 
#2

AW: MemIniCrypt: Vollverschlüsseltes Arbeiten mit ini-Dateien - Kommentare erwünscht!

  Alt 21. Jan 2011, 16:54
Ich würde in MemIniCrypt noch gerne eine neue Funktion (RenameSection) einbauen. Dafür bräuchte ich aber Zugriff auf FSections, das in TMemIniFile als private deklariert ist. Gibt es irgendeine Möglichkeit, doch direkt auf diese Liste zuzugreifen?
edit: Mit GetStrings und SetStrings kann ich natürlich über eine Hilfsliste darauf zugreifen, aber ich würde generell gerne wissen, ob Delphi beim Ableiten vielleicht doch irgendeine Möglichkeit bietet, eine private Variable umzudeklarieren. Bei den ganzen Möglichkeiten (override, reinroduce, inherited, overload, etc.), weiß ich jetzt leider nicht, ob da nicht irgendwas davon auch für private Variablen gilt.
Nur Delphi schafft es, einem ein Lächeln zu schenken, wenn man sich beim Schreiben von := vertippt und stattdessen ein :) erscheint.

Geändert von CodeX (21. Jan 2011 um 17:08 Uhr)
  Mit Zitat antworten Zitat
CodeX

Registriert seit: 30. Okt 2004
475 Beiträge
 
Delphi 12 Athens
 
#3

AW: MemIniCrypt: Vollverschlüsseltes Arbeiten mit ini-Dateien - Kommentare erwünscht!

  Alt 23. Jan 2011, 15:17
Im Anhang eine neue Version (MemIniCrypt 1.1) mit einem notwendigen Fix, ein paar Änderungen und Erweiterungen.
Das Beispielprogramm aus dem ersten Posting müsste leicht angepasst werden, um mit dieser Version zu funktionieren.
Delphi-Quellcode:
// History
// 2011-01-17 1.0 Release
// 2011-01-23 1.1
// - Fix for ReadInteger/Bool etc.
// - Added Encryption as parameter for more control
// - Added two custom functions RenameSection & CloneSection
Das mit dem Initialisierungsvektor habe ich nicht eingebaut, weil mir das immer noch nicht klar genug ist, als dass ich das schnell korrekt einbauen könnte. Sollte jemand Lust haben, das umzusetzen, gerne. Letztlich ist das hier als universelle Lösung für alle Delphi-Programmierer gedacht.
Angehängte Dateien
Dateityp: pas MemIniCrypt.pas (11,4 KB, 32x aufgerufen)
Nur Delphi schafft es, einem ein Lächeln zu schenken, wenn man sich beim Schreiben von := vertippt und stattdessen ein :) erscheint.
  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 06: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