![]() |
Unicode + BASE64?
Hallo.
Wieder mal eine meiner vielen Fragen zu Unicode bzw. WideStrings... Ich möchte einen WideString etwas chiffrieren, sodass dieser nicht direkt über einen HexEditor ausgelesen werden kann. Soll nur eine leichte Chiffrierung wie z.B. BASE64 sein. Jetzt hab ich hier eine schöne Unit für BASE64 gefunden: ![]() Gruß blackdrake |
Re: Unicode + BASE64?
Base64 würde ich dir auf jeden Fall nicht raten .. nimm eine einfache XOR Verschlüsselung oder die RCx Unit von Hagen. Wenn du Base64 verwendest kannst du das verschleiern auch gleich lassen :P
|
Re: Unicode + BASE64?
Hallo.
Danke für den Tipp. Ich schau mir das mal an. Gruß blackdrake |
Re: Unicode + BASE64?
Hallo.
Ich will nun DEC für die Verschlüsselung nutzen. Dort gibt es eine Funktion der Art Verschlüsselung(input: string): string. Ist es damit überhaupt möglich, einen WideString zu speichern? Kann es sein, dass bei der Umwandlung WideString -> String -> WideString alle Unicode-Zeichen (z.B. asiatische) verloren gehen? Ich kapiere es einfach nicht, wie ein WideString funktioniert. Eigentlich könnte der String bei der WideString -> String Umwandlung ja auch der String doppelt so lang werden, damit z.B. asiatische Zeichen nicht verloren gehen. Wie muss ich das jetzt machen? Gruß blackdrake |
Re: Unicode + BASE64?
Konvertiere einfach den String nach UTF8. Dürfte die einfachste Lösung sein. Oder du findest eine Funktion die mit Speicherbereichen (also Typlos) arbeitet und die Daten byteweise "anfaßt"
|
Re: Unicode + BASE64?
Du musst nur den Widestring in ein Byte-Array umwandeln und dann das Array verschlüsseln.
Beim Entschlüsseln lädst du das Byte-Array, entschlüsselst es und wandelst es dann in einen Widestring um. |
Re: Unicode + BASE64?
Hallo.
Bytearray? Wie soll ich das machen? Copy() funktioniert ja nur mit Strings. Somit kann ich keinen dynamischen "array of bytes" erstellen und ihn dann mit einer "for"-Schleife unter verwendung von "copy" füllen. Gruß blackdrake |
Re: Unicode + BASE64?
Weiss nich wie das mit Delphi geht. In C# könnt ichs dir sagen ;)
|
Re: Unicode + BASE64?
Na du deklarierst dir ein Array of Char (Char UND Byte = 0..255) verwendest SetLength(ByteArray, Length(UnicodeStr)) und kopierst mittels Copy(@ByteArray[0], @UnicodeStr[1], Length(UnicodeStr)) das ganze ins Array.
Dann kannst du der Funktion zum verschlüsseln einfach das ByteArray übergeben. Da dieses als Array of Char deklariert ist und somit nichts anderes als in String ist sollte Delphi das akzeptieren. Ansonsten einfach vorher nach String() typecasten. |
Re: Unicode + BASE64?
Mhh... so in etwa? Hier sagt er, es seien inkompatible Typen. :(
Delphi-Quellcode:
function WideStringToString_Lossyless(UnicodeStr: WideString): string;
var ByteArray: Array of Char; // Array of Byte begin SetLength(ByteArray, Length(UnicodeStr)); ByteArray := Copy(@ByteArray[0], @UnicodeStr[1], Length(UnicodeStr)); result := string(ByteArray); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:24 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