Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Najkrótsze zakodowanie stringa.
haryb
post
Post #1





Grupa: Zarejestrowani
Postów: 137
Pomógł: 0
Dołączył: 9.11.2004
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


Mam następujące pytanie jak w php można w prosty sposób skrócić długość stringa ale tak by później móc odzyskać całą informacje?
Próbowałem z długiego stringa robić md5 i później odkodowywać ale md5 zwraca jeszcze za długi ciąć.
Czy jest jakieś bardziej kodowanie gdzie można by skrócić tą długość?

p.s. Czy znacie może namiary na jakiąś gotową funkcję która zamieni mi tablice na liczbe a inna funkcja z powrotem po podaniu ów liczby utworzy tablice?


pozdro
haryb
Go to the top of the page
+Quote Post
Spawnm
post
Post #2





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




md5 nie odkodujesz ...

chyba nie ma takiej gotowej funkcji .
sam coś zmontuj np str_replace('az','X',$tresc); i odkodowanie str_replace('X','az',$tresc);
tyle że może być problem z odkodowaniem...
Go to the top of the page
+Quote Post
Maxik
post
Post #3





Grupa: Zarejestrowani
Postów: 726
Pomógł: 129
Dołączył: 10.01.2008
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


Masz str_rot13" title="Zobacz w manualu PHP" target="_manual i base64_encode" title="Zobacz w manualu PHP" target="_manual + base64_decode" title="Zobacz w manualu PHP" target="_manual
Go to the top of the page
+Quote Post
Spawnm
post
Post #4





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




tylko że to miało skrócić stringa ...
Go to the top of the page
+Quote Post
haryb
post
Post #5





Grupa: Zarejestrowani
Postów: 137
Pomógł: 0
Dołączył: 9.11.2004
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


No właśnie szukam takiego sposobu by np z takiej długości :
234234fddf245345sdfdfgd
Zrobił chociaż połowe i żeby później można było odkodować.

Ewentualeni jeśli znacie rozwiązanie z mojego P.S w pierwszym poście to również rozwiązało by mój problem.
Po prostu musze tylko i wyłącznie za pomocą GET ( zadna sesja, coockie itd nie wchodzi w gre)przesłać zawartość tablicy - kodujac ja na jakas liczbe, bity itd a póżniej odebrac i znowu odtworzyc cal tablice.
I mam taki jakiś trefny ale działąjący alegorytm który zamienia tablice na string 01-nkowy nastpenie spowrotem tworzy tablice , ale jak tablica ma kilkanascie rekordow to ten string zakodowany jest strasznie dlugi i nie chciał bym go wrzucać do GETa.


pozdro
haryb
Go to the top of the page
+Quote Post
kefirek
post
Post #6





Grupa: Zarejestrowani
Postów: 781
Pomógł: 256
Dołączył: 29.06.2008

Ostrzeżenie: (0%)
-----


serialize" title="Zobacz w manualu PHP" target="_manual

unserialize" title="Zobacz w manualu PHP" target="_manual
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #7





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

Ostrzeżenie: (0%)
-----


O jeb.
Koles, do kompresji masz zip'a, gzipa itd.
md5 sie do tego nie nadaje bo tego nie odkodujesz.


A nie mozesz zapisac w bazie tej tablicy i tylko przekazac jej ID?
Go to the top of the page
+Quote Post
erix
post
Post #8





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
Czy jest jakieś bardziej kodowanie gdzie można by skrócić tą długość?

Przypomnij sobie lekcję z systemów liczbowych z informatyki (jeśli ją miałeś) i stwórz własny korzystając z pozostałych znaków alfabetu. (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Nie tylko 1-16 (hex), ale 1-40 cyfr w jednym znaku. (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
haryb
post
Post #9





Grupa: Zarejestrowani
Postów: 137
Pomógł: 0
Dołączył: 9.11.2004
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


Cytat(dr_bonzo @ 1.04.2009, 17:58:57 ) *
A nie mozesz zapisac w bazie tej tablicy i tylko przekazac jej ID?

Odpada - nie ma być wogóle wykorzystana baza.

Pozdro
haryb
Go to the top of the page
+Quote Post
erix
post
Post #10





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




To pliki możesz przecież ponazywać odpowiednio, zrobić sobie płaską bazę, czy wreszcie SQLite...
Go to the top of the page
+Quote Post
timon27
post
Post #11





Grupa: Zarejestrowani
Postów: 578
Pomógł: 69
Dołączył: 15.04.2007
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Ja bym to zrobił tak: aby maxymalnie zmniejszyć wielkość ciągu ustal jakie znaki mogą się w nim znajdować (np wiesz że nie powinno tam być dużych liter), a następnie wrzuć cały alfabet do tablicy
Kod
$tablica=array('a','b','c');
$l=length($tablica);

następnie ciąg rozbijasz na tablice:
Kod
$ciag=explode("",$ciag);

i zapisujesz ciag w liczbie:
Kod
$suma=0;
foreach($ciag as $znak){
$n=numer_znaku($tablica,$znak)
$suma=$suma*$l+$n;
}

gdzie funkcja 'numer_znaku' zwraca liczbę mówiącą na którym miejscu w tabeli znajduje się znak

Gwarantuje Ci że taki sposób kompresji jest najlepszy (pesymistycznie), lecz jego kodowanie i odkodowanie przy dłuższych ciągach może być czasochłonne
Go to the top of the page
+Quote Post
slewin
post
Post #12





Grupa: Zarejestrowani
Postów: 104
Pomógł: 7
Dołączył: 9.12.2008
Skąd: wroc

Ostrzeżenie: (0%)
-----


Cytat(Spawnm @ 1.04.2009, 18:59:24 ) *
md5 nie odkodujesz ...

A program John the Ripper (IMG:http://forum.php.pl/style_emoticons/default/czarodziej.gif)
Go to the top of the page
+Quote Post
Spawnm
post
Post #13





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




Cytat(slewin @ 1.04.2009, 21:06:20 ) *

a brutal force, a tęczowe tablice...
tu raczej chodzi o szybie odkodowanie a nie zarzynanie kompa.
Go to the top of the page
+Quote Post
ts23
post
Post #14





Grupa: Zarejestrowani
Postów: 12
Pomógł: 1
Dołączył: 20.03.2009

Ostrzeżenie: (0%)
-----


Cytat(erix @ 1.04.2009, 20:03:51 ) *
Przypomnij sobie lekcję z systemów liczbowych z informatyki (jeśli ją miałeś) i stwórz własny korzystając z pozostałych znaków alfabetu. (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Nie tylko 1-16 (hex), ale 1-40 cyfr w jednym znaku. (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

36, używając base_convert
Go to the top of the page
+Quote Post
mls
post
Post #15





Grupa: Zarejestrowani
Postów: 677
Pomógł: 89
Dołączył: 31.08.2003
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Cytat(slewin @ 1.04.2009, 21:06:20 ) *


Nic nie odkodowuje md5. Można co najwyżej trafić na taki sam hash.

A odnośnie kompresji - zależy jak długi tekst chcesz skompresować. Jeśli krótki, to nie warto się tym tematem interesować. Jeśli długi, można spróbować z gzcompress" title="Zobacz w manualu PHP" target="_manual połączonym z base64_encode" title="Zobacz w manualu PHP" target="_manual. Połączony, o ile chcesz użyć w skompresowanym ciągu samych "czytelnych" znaków.

Ten post edytował mls 2.04.2009, 18:20:34
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 25.08.2025 - 00:41