AGB  ·  Datenschutz  ·  Impressum  







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

[DEC] WideString ver/entschlüsseln

Ein Thema von xZise · begonnen am 1. Jan 2008 · letzter Beitrag vom 9. Jan 2008
Antwort Antwort
Seite 1 von 3  1 23      
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#1

[DEC] WideString ver/entschlüsseln

  Alt 1. Jan 2008, 20:30
Hallo DP,
wie kann ich mit DEC WideStrings verschlüsseln und dann entschlüsseln?

Standard ist ja folgendes:

Delphi-Quellcode:
function Encode(const Key: String; const Text: String): String;
var
  Salt: Binary;
begin
  with TCipher_Rijndael.Create do
  try
    Mode := cmCBCx;
    Salt := RandomBinary(16);
    Init(THash_SHA1.KDFx(Key, Salt, Context.KeySize));
    Result := TFormat_MIME64.Encode(Salt + EncodeBinary(Text));
  finally
    Free;
  end;
end;
Und wie kann ich diesen kodierten WideString dann speichern?
Am besten dann in ein Byte Array

MfG
xZise
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: [DEC] WideString ver/entschlüsseln

  Alt 1. Jan 2008, 20:44
Versuch es doch mit der Funktion. Sollte ja so gehen, da in einem Unicodestring eine 2 in mehreren Zeichen abgebildet wird.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#3

Re: [DEC] WideString ver/entschlüsseln

  Alt 1. Jan 2008, 21:32
Also so funktioniert es leider nicht:
Delphi-Quellcode:
function Encode(const Key: String; const Text: String): String;
var
  Salt: Binary;
begin
  with TCipher_Rijndael.Create do
  try
    Mode := cmCBCx;
    Salt := RandomBinary(16);
    Init(THash_SHA1.KDFx(Key, Salt, Context.KeySize));
    Result := TFormat_MIME64.Encode(Salt + EncodeBinary(Text));
  finally
    Free;
  end;
end;

function Decode(const Key: String; const Text: String): String;
var
  Data: Binary;
begin
  with TCipher_Rijndael.Create do
  try
    Mode := cmCBCx;
    Data := TFormat_MIME64.Decode(Text);
    Init(THash_SHA1.KDFx(Key, Copy(Data, 1, 16), Context.KeySize));
    Result := DecodeBinary(Copy(Data, 16, MaxInt));
  finally
    Free;
    ProtectBinary(Data);
  end;
end;
Wenn ich nun ein Passwort nehme und einen Text (WideString) bekomme ich nur die 4 letzten Zeichen wieder zurück.

Delphi-Quellcode:
str := Encode(frmPassword.mePasswd.Text, App.GetText);
ShowMessage(Decode(frmPassword.mePasswd.Text, str));
MfG
xZise
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: [DEC] WideString ver/entschlüsseln

  Alt 1. Jan 2008, 21:48
Du solltest hagen mal fragen, ob es die entsprechenden Funktionen auch für Unicode bzw. WideStrings gibt.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.132 Beiträge
 
Delphi 12 Athens
 
#5

Re: [DEC] WideString ver/entschlüsseln

  Alt 3. Jan 2008, 00:19
Ansonsten sollte es doch bestimmt eine Version für binäre Daten (statt der Strings) geben, welche du hierfür verwenden könntest.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#6

Re: [DEC] WideString ver/entschlüsseln

  Alt 3. Jan 2008, 14:26
Zitat von himitsu:
Ansonsten sollte es doch bestimmt eine Version für binäre Daten (statt der Strings) geben, welche du hierfür verwenden könntest.
Da die BASE64 Kodierung in lesbaren Zeichen zurück gibt, muss es schon ein ordentlich gesetzter WideString sein. Somit muss die Routine dem WideString Rechnung tragen und zwei folgende Bytes als Einheit sehen und entsprechend interpretieren. Wenn du dies einfach nur binär betrachtest, dann sollte kein Empfänger dies als String dekodieren können.
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#7

Re: [DEC] WideString ver/entschlüsseln

  Alt 3. Jan 2008, 21:21
Zitat von Muetze1:
Zitat von himitsu:
Ansonsten sollte es doch bestimmt eine Version für binäre Daten (statt der Strings) geben, welche du hierfür verwenden könntest.
Da die BASE64 Kodierung in lesbaren Zeichen zurück gibt, muss es schon ein ordentlich gesetzter WideString sein. Somit muss die Routine dem WideString Rechnung tragen und zwei folgende Bytes als Einheit sehen und entsprechend interpretieren. Wenn du dies einfach nur binär betrachtest, dann sollte kein Empfänger dies als String dekodieren können.
Also es kann auch binär kodiert sein
BASE64 sagte mir nichts in dem Bezug.
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#8

Re: [DEC] WideString ver/entschlüsseln

  Alt 6. Jan 2008, 22:26
Ehm sry wenn ich pushe, aber ich bin etwas verwirrt:
Warum kann ich den ein String nicht binär ver- und wieder entschlüsseln?
Ich mein ein WideString hat eben ein paar "00" zwischen den Zeichen (wenn keine Sonderzeichen verwendet werden).

Und so richtig hat mir das auch nicht geholfen

MfG
xZise
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#9

Re: [DEC] WideString ver/entschlüsseln

  Alt 6. Jan 2008, 23:13
Wenn du es selbst auch wieder decodierst und es nicht irgendwem anders zur Decodierung weitergibst, kannst du es so machen. Eigentlich gibs dann kein Problem - von daher: was ist denn nun das Problem?

Die Verschlüsselung hat doch bestimmt eine Funktion die Entweder ein Const Parameter hat (ohne Typ) oder einen Pointer annimmt. Beim ersten gibst du einfach den WideString[0] an, beim zweiten PWideChar(WideString). Bei beiden vorher testen ob der String auch Zeichen enthält.
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#10

Re: [DEC] WideString ver/entschlüsseln

  Alt 7. Jan 2008, 00:34
Hi,
Ich verstehe gerade nicht, warum ich dort die Parameter ändern muss?

Ich habe eben das Problem, ein WideString zu haben, den ich verschlüsseln und entschlüsseln muss.
Nun wollte ich dafür das DEC verwenden, da es dafür ja perfekt ist.
Und aufgrund der hohen Sicherheit von AES bzw. Rijndael benutze ich diesen.

Meine konkrete Frage und das Problem ist jetzt: Kann man mithilfe von DEC ein WideString verschlüsseln? Was herauskommt (String, WideString, ByteArray) ist egal,
hauptsache das entschlüsseln funktioniert dann.

Zur Zeit funktioniert noch nichtmal folgendes:
Delphi-Quellcode:
function Encode(const Key: String; const Text: String) : String;
var
  Salt: Binary;
  cipher : TCipher_Rijndael;
begin
  cipher := TCipher_Rijndael.Create;
  try
    cipher.Mode := cmCBCx;
    Salt := RandomBinary(16);
    cipher.Init(THash_SHA1.KDFx(Key, Salt, cipher.Context.KeySize));
    Result := TFormat_MIME64.Encode(Salt + cipher.EncodeBinary(Text));
  finally
    cipher.Free;
  end;
end;

function Decode(const Key: String; const Text: String) : String;
var
  Data: Binary;
  cipher : TCipher_Rijndael;
begin
  cipher := TCipher_Rijndael.Create;
  try
    cipher.Mode := cmCBCx;
    Data := TFormat_MIME64.Decode(Text);
    cipher.Init(THash_SHA1.KDFx(Key, Copy(Data, 1, 16), cipher.Context.KeySize));
    Result := cipher.DecodeBinary(Copy(Data, 16, MaxInt));
  finally
    cipher.Free;
    ProtectBinary(Data);
  end;
end;
Aufruf:
ShowMessage(Decode('HW', Encode('HW', 'Die Welt ist nicht genug')));
Ergebnis:
siVµ³äµsF}×—Néòht genug

MfG
xZise
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 00:05 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