[PHP] Lange Strings in kurzen "speichern".

  • Guten Morgen.


    Ich brauche derzeit für einen Code einen Code (^^), der lange Strings in kurzen "packt", damit ich den danach wieder "entpacken" kann.


    Beispiel:
    Ich habe den Text OLDUSjfoicjyosdifOLHFOUHoIUHFOSHESOIfuHosFHPoIHJPGJ)V=SF. Wenn ich die Funktion benutze, die ich hier erfrage, soll z.b. sowas rauskommen: ASl0aSm
    Wenn ich dann die Funktion zum "entpacken" verwende, soll wieder OLDUSjfoicjyosdifOLHFOUHoIUHFOSHESOIfuHosFHPoIHJPGJ)V=SF rauskommen.


    Das ganze möchte ich möglichst realisieren, ohne Dateien anzulegen oder in einer Datenbank etwas zu schreiben.
    Hat da einer eine Idee?

  • mit irgendeinem "Code" verschlüsseln und wieder entschlüsseln


    Und du denkst ernsthaft, darauf wäre ich nicht gekommen?
    Genau das suche ich ja. Ich habe mir einige Verschlüsselungen angesehen, die waren dann aber entweder nur eine Hashfunktion (wie MD5), waren im Endeffekt länger als der Quellstring oder werden für Prüfsummen verwendet.

  • Gibt es nicht.
    Außer die daten einfach immer in md5 zu senden. Funktioniert aber nur bei senden.Oder du speicherst die in md5 und setzt dir eine funktion die den hash überprüft und wenn der md5 gleich ist dann gibste den wert als return oder so raus.


    Könnte dir nacher ne funktion dafür schreiben.

  • Ja, das befürchte ich auch schon irgendwie ...
    Vielleicht kann ich ja mit Sessions etwas rumfuchteln, ich glaube in meinem Fall KÖNNTE das zumindest etwas helfen.


    Muss die dann nur regelmäßig leeren, da die sich sonst anhäufen.


    Gibt es nicht.
    Außer die daten einfach immer in md5 zu senden. Funktioniert aber nur bei senden.Oder du speicherst die in md5 und setzt dir eine funktion die den hash überprüft und wenn der md5 gleich ist dann gibste den wert als return oder so raus.


    Könnte dir nacher ne funktion dafür schreiben.

    Ich könnte mir selbst auch sowas ruck zuck schreiben, das wäre ja kein Problem für mich.
    Das Problem ist nur, dass ich hier dynamische Werte hab, weswegen ich dann nicht einfach eine Prüfung durchführen kann, ob der Hash mit etwas anderem übereinstimmt ...

  • Du kannst dein Glueck mal mit ein paar Kompressions/Archivierungs Funktionen versuchen:
    http://www.php.net/manual/en/refs.compression.php


    Die lzf, Bzip2 und Zlib Funktionen sehen so aus, als ob sie fuer einen derartigen Zweck nuetzlich sein koennten (die akzeptieren strings in den Funktionen):
    http://www.php.net/manual/en/function.lzf-compress.php (lzf)
    http://www.php.net/manual/en/function.bzcompress.php (bzip2)
    http://www.php.net/manual/en/function.gzdeflate.php (zlib)


    Aber, dass bei einem so relativ kurzen string mit einer der Methoden noch viel komprimiert werden kann wage ich zu bezweifeln.


    Habe gerade einen kurzen Test durchgefuehrt und bei allen drei Methoden und der im ersten Beitrag angegebenen Zeichenkette (OLDUSjfoicjyosdif...) hat es entweder keine Komprimierung gegeben, oder sogar zum erweitern der Daten gefuehrt (92 byte mit BZip2 und 76byte mit GZip, anstatt der 56 byte in Unkomprimierter Form). Keine kompressions Methode war in der Lage unter die schon vorhandenen 56 byte zu kommen. Bei einem groesseren string ist das schon anders. Eine ca. 515 KB grosse Datei (forum.sa-mp.de Startseite) hat GZip in nur 53 KB umgewandelt. Die DEFLATE methode hat 55 KB als resultat und BZip2 hat es sogar unter 30 KB geschafft (dauerte aber auch merkbar laenger).
    Je nach Konfiguration und dem Inhalt der zu komprimierenden Zeichenkette koennen auch bessere und schlechtere Ergebnisse erreicht werden. Eine Datei mit 515 tausend 'a' kann auf wenige byte gebracht werden, aber eine Datei mit 515 tausend zufaelligen Buchstaben, kann nicht so leicht Komprimiert werden.

    Einmal editiert, zuletzt von SBIKA ()