AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi String ver-/ entschlüssel - einfach ohne Sonderzeichen
Thema durchsuchen
Ansicht
Themen-Optionen

String ver-/ entschlüssel - einfach ohne Sonderzeichen

Ein Thema von Alex_ITA01 · begonnen am 8. Mai 2019 · letzter Beitrag vom 8. Mai 2019
Antwort Antwort
Alex_ITA01

Registriert seit: 22. Sep 2003
1.134 Beiträge
 
Delphi 12 Athens
 
#1

String ver-/ entschlüssel - einfach ohne Sonderzeichen

  Alt 8. Mai 2019, 08:46
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:

MyStr_GeilerName Danke schonmal für eure Anregungen
Let's fetz sprach der Frosch und sprang in den Mixer
  Mit Zitat antworten Zitat
Andreas13

Registriert seit: 14. Okt 2006
Ort: Nürnberg
721 Beiträge
 
Delphi XE5 Professional
 
#2

AW: String ver-/ entschlüssel - einfach ohne Sonderzeichen

  Alt 8. Mai 2019, 08:57
Hi Alex,

vor kurzem habe ich einen möglichen Lösungsvorschlag geschildert, der auch zu Deiner Aufgabenstellung passen würde:

https://www.delphipraxis.net/200188-...ml#post1428892

Gruß
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.629 Beiträge
 
Delphi 12 Athens
 
#3

AW: String ver-/ entschlüssel - einfach ohne Sonderzeichen

  Alt 8. Mai 2019, 09:14
Du kannst ja wie gewohnt in eine beliebige Byte-Sequenz verschlüsseln und das Ergebnis dann mit Base64 in einen brauchbaren String umwandeln.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Schokohase
(Gast)

n/a Beiträge
 
#4

AW: String ver-/ entschlüssel - einfach ohne Sonderzeichen

  Alt 8. Mai 2019, 09:16
Du kannst ja wie gewohnt in eine beliebige Byte-Sequenz verschlüsseln und das Ergebnis dann mit Base64 in einen brauchbaren String umwandeln.
Nein, das geht so nicht, denn Base64 verwendet Zeichen die nicht als Dateinamen verwendet werden dürfen.

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.

Siehe Wikipedia
Zitat:
Bei Dateinamen oder URL können die Zeichen + , / und = nicht verwendet werden, da sie dort für besondere Funktionen reserviert sind. In einem solchen Fall wird mit „base64url“ eine inkompatible Abwandlung beschrieben. Die Zeichen + und / werden dann durch - (Minus, ASCII 2Dhex) und _ (Unterstrich, ASCII 5Fhex) ersetzt. Das Füllzeichen = am Ende wird prozentkodiert zu %3d, kann aber entfallen, wenn die Länge des Strings bekannt ist.

Geändert von Schokohase ( 8. Mai 2019 um 09:20 Uhr)
  Mit Zitat antworten Zitat
Andreas13

Registriert seit: 14. Okt 2006
Ort: Nürnberg
721 Beiträge
 
Delphi XE5 Professional
 
#5

AW: String ver-/ entschlüssel - einfach ohne Sonderzeichen

  Alt 8. Mai 2019, 09:44
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;
  Mit Zitat antworten Zitat
Andreas L.

Registriert seit: 23. Mai 2011
Ort: Furth im Wald
308 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: String ver-/ entschlüssel - einfach ohne Sonderzeichen

  Alt 8. Mai 2019, 11:47
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:
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;
Komplettes Demo-Projekt im Anhang!
Angehängte Dateien
Dateityp: zip DEC Test.zip (704,4 KB, 9x aufgerufen)
Andreas Lauß
Blog

Geändert von Andreas L. ( 8. Mai 2019 um 11:52 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#7

AW: String ver-/ entschlüssel - einfach ohne Sonderzeichen

  Alt 8. Mai 2019, 21:30
(aus Datenschutzgründen darf der Ordnername nicht lesbar sein).
Für diese Zwecke sollten eigentlich die Zugriffsrechte angepasst werden. Eine Verschlüsselung von Dateinamen/Ordnernamen scheint mir eher "Security by Obscurity" zu sein.
mit Base16 hast Du keine Sonderzeichenprobleme.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  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 10: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