![]() |
String ver-/ entschlüssel - einfach ohne Sonderzeichen
Moin zusammen,
ich habe schon diverse Verschlüsselungen versucht die auch funktionieren (Xor, Polyalphabetische Substitution). Leider benötige ich eine Verschlüsselungsvariante, welche keine Sonderzeichen generiert, da ich das Ergebnis als Ordner auf der Festplatte erstellen möchte (aus Datenschutzgründen darf der Ordnername nicht lesbar sein). Falls jemand denkt das damit Schindluder betrieben wird, dem möchte ich gleich widersprechen und auch keine Diskussion dazu anfangen. Kennt jemand von euch solche Verfahren ohne Sonderzeichen? Der InputStr könnte so aussehen:
Delphi-Quellcode:
Danke schonmal für eure Anregungen
MyStr_GeilerName
|
AW: String ver-/ entschlüssel - einfach ohne Sonderzeichen
Hi Alex,
vor kurzem habe ich einen möglichen Lösungsvorschlag geschildert, der auch zu Deiner Aufgabenstellung passen würde: ![]() Gruß Andreas |
AW: String ver-/ entschlüssel - einfach ohne Sonderzeichen
Du kannst ja wie gewohnt in eine beliebige Byte-Sequenz verschlüsseln und das Ergebnis dann mit Base64 in einen brauchbaren String umwandeln.
|
AW: String ver-/ entschlüssel - einfach ohne Sonderzeichen
Zitat:
Das Prinzip wie bei Base64 eine Byte-Folge in eine Zeichenkette kodiert wird ist aber der richtige Weg, man darf halt nur gültige Zeichen verwenden. ![]() Zitat:
|
AW: String ver-/ entschlüssel - einfach ohne Sonderzeichen
Hi Alex,
das habe ich zuvor eigentlich gemeint: Wandle Dein verschlüsseltes Passwort in einen Hexadezimal-String um, den Du als Verzeichnis-Name verwenden kannst.
Delphi-Quellcode:
Function ShortString_To_HexString(S : ShortString): AnsiString; // Hexadezimal-String-Array
Type CharHexType = String[2]; VAR c : Array[0..255] of Byte ABSOLUTE S; Len, i : Integer; SS : AnsiString; // verschlüsseltes Passwort als HexString-Array CharHex: CharHexType; SHex : Array[0..255] of CharHexType; // Stelle 0 = Länge als Hex-Zahl! Begin Len := ord(S[0]); SHex[0] := IntToHex(Len,2); // LängenHex-Zahl For i := 1 To Len Do Begin // Verschlüsselten String S in ein Hexadezimal-String-Array umwandeln: CharHex := IntToHex(c[i],2); SHex[i] := CharHex; End; // AnsiString schreiben: SS := ''; For i:= 0 {!!! auch Längen-Hex-Zahl!!!} To Len Do Begin SS := SS + SHex[i]; End; Result := SS; End; |
AW: String ver-/ entschlüssel - einfach ohne Sonderzeichen
Liste der Anhänge anzeigen (Anzahl: 1)
Ich verwende zum verschlüsseln das DEC (Delphi Encryption Compedium) von Hagen Redman. Kostenloser Download:
Ich verwende DEC 5.2. Die obere Variante ist für neuere Delphi-Versionen. Beispiel-Code:
Delphi-Quellcode:
Komplettes Demo-Projekt im Anhang!
function TfrmStringEncrypter.Crypt(
AText: RawByteString; APassword: RawByteString; AAlgorithm: TCipherAlgorithm = caBlowfish; AEncrypt: Boolean = True): RawByteString; var Cipher: TDECCipher; begin // Cipher erzeugen Cipher := Self.GetCipherClass(AAlgorithm).Create; // initialisieren Cipher.Init(APassword); // String ent-/ver-schlüsseln if AEncrypt then Result := Cipher.EncodeBinary(AText) else Result := Cipher.DecodeBinary(AText); // Speicher freigeben FreeAndNil(Cipher); end; |
AW: String ver-/ entschlüssel - einfach ohne Sonderzeichen
Wie oben erwähnt zum Beispiel mit XOR verschlüsseln und das Ergebnis in einen Hex-String umwandeln. Dann hast du natürlich nur die Zeichen 0-9 sowie A-F :)
|
AW: String ver-/ entschlüssel - einfach ohne Sonderzeichen
Musst Du nur verschlüsseln oder auch entschlüsseln?
Wenn nur verschlüsseln: MD5-Summe bilden und die als Verzeichnisnamen nehmen. Zeichen 0-9 und A-F. Alle Verzeichnisnamen sind gleich lang, damit ist auch über die Länge des Verzeichnisnamens kein Rückschluss auf die Länge der verschlüsselten Zeichenfolge möglich. Eine "Restaurierung" der verschlüsselten Zeichenfolge anhand der MD5-Summe ist ebenfalls nicht möglich. Der Weg "Zeichenfolge -> Verzeichnisname" ist demnach eine Einbahnstraße. |
AW: String ver-/ entschlüssel - einfach ohne Sonderzeichen
Danke für die Anregungen.
Das mit xor und dann in Hex umwandeln werde ich mal versuchen, hört sich gut an. Ich will verschlüsseln und entschlüsseln, zur Info ;-) |
AW: String ver-/ entschlüssel - einfach ohne Sonderzeichen
Zitat:
so umgebaut, dass diese auch auf anderen Plattformen funktioniert. Zumindest für die Hash-Algorithmen ist schon ein FMX basiertes Demo Program dabei, welches ich auch schon in Google Play als DEC Hash Demo veröffentlicht habe. In der DECFormat.pas Unit (ja, V6.0 nennt einige Units sprechender) gibt es sicher Formate (wie Hex) die keine in Dateinamen verbotenen Sonderzeichen produzieren. Grüße TurboMagic |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:25 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