AGB  ·  Datenschutz  ·  Impressum  







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

Unicode + BASE64?

Ein Thema von blackdrake · begonnen am 20. Aug 2007 · letzter Beitrag vom 27. Aug 2007
 
blackdrake

Registriert seit: 21. Aug 2003
Ort: Bammental
618 Beiträge
 
Delphi 10.3 Rio
 
#34

Re: Unicode + BASE64?

  Alt 27. Aug 2007, 02:35
Hallo.

Danke für den Hinweis.

Ich habe gerade folgende Funktionen bei Hagen als Verbesserungsvorschläge für die nächste DEC Version eingereicht. Diese erweitern DEC um die direkte WideString-Verschlüsselung ohne Umwege.

Delphi-Quellcode:
// Unit DECCipher.pas

function TDECCipher.EncodeWideString(const Source: WideString; Format: TDECFormatClass): Binary;
var
  b: binary;
begin
  try
    SetLength(b, Length(Source) * SizeOf(WideChar));
    Move(Source[1], b[1], Length(b) * SizeOf(Char));
    result := EncodeBinary(b);
  finally
    ProtectBinary(b);
  end;
end;

function TDECCipher.DecodeWideString(const Source: Binary; Format: TDECFormatClass): WideString;
var
  b: binary;
begin
  try
    b := DecodeBinary(Source);
    SetLength(result, Length(b) div SizeOf(WideChar));
    Move(b[1], result[1], Length(b));
  finally
    ProtectBinary(b);
  end;
end;

// Unit DECHash.pas

class function TDECHash.CalcWideString(const Data: WideString; Format: TDECFormatClass): Binary;
begin
  Result := CalcBuffer(Data[1], Length(Data) * sizeof(WideChar), Format);
end;

// Anmerkung: Overload
class function TDECHash.KDFx(const Data, Seed: WideString; MaskSize: Integer; Format: TDECFormatClass = nil; Index: LongWord = 1): Binary;
begin
  Result := KDFx(Data[1], Length(Data) * sizeof(WideChar), Seed[1], Length(Seed) * sizeof(WideChar), MaskSize, Format, Index);
end;
Wenn Hagen mir einen Verbesserungsvorschlag für die oben genannten Funktionen gibt, werde ich diesen Beitrag editieren.

Binary ist wie gesagt ein einfacher String. Hagen hat mir bestätigt, dass es im ganzen DEC keine Probleme mit #0 innerhalb von "binary"s gibt (er sagte was von LongString nach PChar typecasten).

Sollte ich dieses WideString Problem jedoch bei Nicht-DEC-Situationen erhalten, werde ich auf UTF8Encode() und UTF8Decode() zurückgreifen, um auf der sicheren Seite zu sein.

Danke nochmal für eure Hilfe.

War leider ein etwas langviriger Threat. Ich unterstütze zwar Unicode, aber mit Delphi ist das teilweise kompliziert und man bekommt Steine in den Weg gelegt. Borland soll ja 2008 alle offiziellen VCLs mit Unicode versehen haben (vgl. Wikipedia). Ich weiß, dass es mit TNT/TMS und EldoS auch jetzt schon geht, ist aber für ein OpenSource Projekt nicht so gut, weil die Quelltext-Betrachter/Bearbeiter dann das selbe VCL-Produkt besitzen müssen. Und TNT/TMS ist leider nicht mehr kostenlos.

Weiß jemand von euch, ob bei Delphi 2008 auch tatsächlich das WIN32 gemeint ist, oder wartet Borland, bis WIN32 tot ist und implementiert dann Unicode in WIN64? Letzteres will ich nicht hoffen.

Gruß
blackdrake

EDIT: Ressourcenschutzblöcke eingefügt, siehe Kommentar von Hagen.
Daniel Marschall
  Mit Zitat antworten Zitat
 


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 08:22 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