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
Seite 1 von 2  1 2      
Alex_ITA01

Registriert seit: 22. Sep 2003
1.115 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
711 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
10.995 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
711 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, 6x aufgerufen)
Andreas Lauß
Blog

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

Registriert seit: 12. Jan 2007
Ort: Sulzbach a.d. Murr
1.028 Beiträge
 
Delphi 10.4 Sydney
 
#7

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

  Alt 8. Mai 2019, 12:35
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
Michael Kübler
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.415 Beiträge
 
Delphi 7 Professional
 
#8

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

  Alt 8. Mai 2019, 12:41
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.
  Mit Zitat antworten Zitat
Alex_ITA01

Registriert seit: 22. Sep 2003
1.115 Beiträge
 
Delphi 12 Athens
 
#9

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

  Alt 8. Mai 2019, 20:05
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
Let's fetz sprach der Frosch und sprang in den Mixer
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.815 Beiträge
 
Delphi 12 Athens
 
#10

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

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

[/DELPHI]
Im Development Branch befindet sich übrigens eine V6.0 Alpha, compilierbar bis inklusive Rio und
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
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 23:28 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