AGB  ·  Datenschutz  ·  Impressum  







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

Probleme mit DCPcrypt

Ein Thema von DLX · begonnen am 24. Mai 2018 · letzter Beitrag vom 18. Jun 2018
Antwort Antwort
DLX

Registriert seit: 17. Apr 2018
20 Beiträge
 
#1

Probleme mit DCPcrypt

  Alt 24. Mai 2018, 14:10
Hallo,

ich verwende DCPcrypt zum ver- und entschlüsseln von Text. Das klappt soweit auch Prima, jedoch hab ich das Problem das irgendwelche komischen Sonderzeichen beim entschlüsseln angehängt werden, habt ihr eine Lösung dafür ?

Code:
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs,DCPcrypt2, DCPblockciphers, DCPrijndael, DCPbase64,
  Vcl.StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    Edit1: TEdit;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
function DecryptText():String;
var Cipher : TDCP_rijndael;
    Data, Key, IV : ansistring;
    index, dataLength, bsize, pad: integer;

begin
  key := '12345678901234567890123456789012';
  IV := '1234567890123456';
  Data := form1.Edit1.text;
  Data := DCPBase64.Base64DecodeStr(Data);
  Cipher := TDCP_rijndael.Create(nil);
  try
    Cipher.Init(Key[1],128,@IV[1]);

    Cipher.DecryptCBC(Data[1],Data[1],Length(Data));

  finally
    Cipher.Burn;
    Cipher.Free;
  end;

  form1.Memo1.Lines.Add(Data);


end;

function EncryptText():String;
var Cipher : TDCP_rijndael;
    Data,DataDec, Key, IV : ansistring;
    index, dataLength, bsize, pad: integer;
begin
  key := '12345678901234567890123456789012';
  IV := '1234567890123456';
  //Data := 'thisis128bitstxt';
  Data := form1.edit1.text;

  Cipher := TDCP_rijndael.Create(nil);
  try
    Cipher.Init(Key[1],128,@IV[1]);

    //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.EncryptCBC(Data[1],Data[1],Length(Data));

  finally
    Cipher.Burn;
    Cipher.Free;
  end;

  Data := DCPBase64.Base64EncodeStr(Data);
  form1.Memo1.Lines.Add(Data);

end;

procedure TForm1.Button1Click(Sender: TObject);
begin
EncryptText();

end;
procedure TForm1.Button2Click(Sender: TObject);
begin
DecryptText();
end;

procedure TForm1.FormCreate(Sender: TObject);
begin

end;

end.
Ich hoffe Ihr habt eine Idee, Danke schonmal

Grüße
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Probleme mit DCPcrypt

  Alt 24. Mai 2018, 14:32
DCPcrypt von welcher Quelle?
eingestelltes Original von David A.W. Barton
von Warren Postma
von Multiple User
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
DLX

Registriert seit: 17. Apr 2018
20 Beiträge
 
#3

AW: Probleme mit DCPcrypt

  Alt 24. Mai 2018, 16:21
DCPcrypt v2.0 written by David Barton
  Mit Zitat antworten Zitat
gammatester

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

AW: Probleme mit DCPcrypt

  Alt 24. Mai 2018, 16:23
Das werden die Padding-Bytes sein. Ich sehe sie beim Verschlüsseln aber nicht beim Entschlüsseln. Lösungen:
  • Paddingbytes entfernen beim Entschlüsseln,
  • Kein Padding und 'manuelles' Auffüllen auf 16-Byte-Vielfaches,
  • Anderen Betriebsmodus nehmen (CFB8, CTR, OFB, CBC+Ciphertextstealing).

Geändert von gammatester (24. Mai 2018 um 16:25 Uhr)
  Mit Zitat antworten Zitat
DLX

Registriert seit: 17. Apr 2018
20 Beiträge
 
#5

AW: Probleme mit DCPcrypt

  Alt 24. Mai 2018, 16:39
weiß jemand wie der code für das padding beim entschlüsseln wäre ?
  Mit Zitat antworten Zitat
gammatester

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

AW: Probleme mit DCPcrypt

  Alt 24. Mai 2018, 16:55
weiß jemand wie der code für das padding beim entschlüsseln wäre ?
Vermutlich ungefähr so in Pseudo-Code:
Code:
pad := ord(Data[length(Data)])
Entferne die letzten pad Bytes/Ansichars von Data
So wie ich den Source für's Verschlüsseln sehe, werden immer 1..16 Bytes angehängt.

Geändert von gammatester (24. Mai 2018 um 18:58 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Probleme mit DCPcrypt

  Alt 24. Mai 2018, 20:11
Ersetze bei Dir   form1.Memo1.Lines.Add(Data); mit   form1.Memo1.Lines.Add(Trim(Data)); und dann passt es.
In der DecryptText() funktion, falls das unklar ist.

ps: Ich habe die Sourceforge Variante genommen.
pps: Der Fehler ist das der Speicher überschrieben wird aber keine neue Länge bekommt.
Gruß vom KodeZwerg

Geändert von KodeZwerg (24. Mai 2018 um 20:14 Uhr)
  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 17:43 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