Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: ukryć inta w incie
Forum PHP.pl > Forum > PHP
fiszol
Potrzebuję coś takiego zrobić ale moja koncpecja szybko upadła i nie mam nowej. W moim zamyśle,//// olać zamysĸy prościej pokazać niż wytłumaczyć;-)

  1. function hide_int($i) {
  2. $length = strlen($i);
  3. $rands = array(rand(235,789),rand(100,999),rand(145,678),rand(322,655));
  4. $theint = implode("",$rands);
  5. $where = rand(1,9);
  6. $part[1] = substr($theint,0,-$where);
  7. $part[2] = substr($theint,12-$where,$where);
  8. return $length."-".$part[1].$i.$part[2]."-".$where;
  9. }

Na początku tego stringa wychodzi ile int ma długości, na końcu ile znaków od końca go znajdziemy. W moim zamyśle nie było tych "-", dopisałem je gdy zorientowałem się że wyłoże się przy odkopywaniu tego bo nie mam pojęcia ile może długości mieć length, $i nie będzie stałej długości. Co z tego więc, że będę wiedział skąd kopać, jak nie będę wiedział ile. Ktoś ma pomysł jak do tego podejść, żeby efektem była liczba całkowita?
redeemer
W twoim przykładzie wystarczy że zrobisz return $where.$part[1].$i.$part[2]; $where będzie zawsze liczbą jednocyfrową, w związku z tym wiesz ile będziesz musiał "obciąć" znaków z początku i końca stringa przy dekodowaniu.

Co dokładnie chcesz osiągnąć? Czemu to ma służyć? Nie lepiej zastosować jakiegoś XORa + działania arytmetyczne?
fiszol
Potrzebuje przesłać id użytkownika z jednej domeny do drugiej., tak, żeby użytkownik nie widział swojego id.

Cytat
W twoim przykładzie wystarczy że zrobisz return $where.$part[1].$i.$part[2];

Też o tym myślałem, ale w tedy całe ukrywanie wydało mi się zbyt banalne. Chociaż może i starczy bo wszystkie id userków skrzętnie chowam pod mod_rewrite. Pomyślałem, że opleść id cyframi starczy. Nie wiem jak działają XORy, jak wygląda przykładowy output, mój output musi ładnie pójść w $_GET bez żadnego owijania w base64, nie może być dłuższy jak 40 znaków. Doczytam sobie o XOR popołudniu, dzięki za tip.
Sephirus
A nie lepiej zrobić koder/dekoder na znaki - jak na przykład na Youtube itp.?

Masz na przykład id = 12345 a wynikowe jest nb23j1is wink.gif

Wystarczy zrobić sobie alfabet ['a','b','c','d'...] - pomieszać kolejność w tablicy i zastosować algorytm jak przy zamianie HEX<->DEC wink.gif
fiszol
Cytat(Sephirus @ 17.07.2012, 11:27:47 ) *
A nie lepiej zrobić koder/dekoder na znaki - jak na przykład na Youtube itp.?

Masz na przykład id = 12345 a wynikowe jest nb23j1is wink.gif

Wystarczy zrobić sobie alfabet ['a','b','c','d'...] - pomieszać kolejność w tablicy i zastosować algorytm jak przy zamianie HEX<->DEC wink.gif

Tego się chwyciłem i efekt wygląda tak:
Kod
A7SGA7AIGZI7I7Z9 (id: 7893)
7A9RGFSFSGGZSA47 (id: 4334)
I94F4G7RS4AFS4I7 (id: 9242)
ZAGZIA4F7SAZS7AI (id: 2939)
G47IR79ASZZ7SSFI (id: 6863)
IRASR7ZISZFA97ZF (id: 354)
ASFGZ7I4GAF7GGZR (id: 6516)
ASSZAI4SZIARFRIR (id: 4968)
I7I9FIGS7RR949GR (id: 1720)
F99GZAG74F99IFA7 (id: 5203)
GFAFG7SZ7Z7GZSGI (id: 6787)
ZII9IZFS9GGIGSZI (id: 3752)
7S4S4AZ4G9ZAGAAG (id: 8971)
A9S494GG9S9ISRZ4 (id: 7307)
ASFRZZZAAAAZI9R9 (id: 2420)
7S4ZR44R9997GSGA (id: 4313)
SZS4994Z7ZAGZ4S9 (id: 3372)
FRFI74RRIFF7I499 (id: 6688)
FZ4G44F4IZ4Z4A44 (id: 2333)
R49IZRRF7S9Z4ZSG (id: 7407)
I4ZGIA79ZI4G4RAF (id: 4388)
RIFA7S9SSSG4ZIA7 (id: 3027)
SFSGGSS4ZISZIZAI (id: 2414)
FZRGR44AGRI7FIA7 (id: 4171)
GG9RF9ARG7AR7GRI (id: 6137)
Z9Z7GRZ9AIZIZA4F (id: 3357)
FZIZ7AG7FA4Z9S4A (id: 3470)
7RFIG4A44ZRZSSAS (id: 6654)
97SI7ZGF44RIZFRS (id: 4561)
ZAIFGSRI7FI4I9ZS (id: 8212)
IG4FF44GSFA4A9R7 (id: 6440)
4I9G9GRRIS4SG7F4 (id: 2586)
ZS9A4FI4RSARSFRA (id: 4043)
SISSSSR4R9IIISRA (id: 8459)
R7GAS7RZSGGRR44F (id: 702)
447RS4S799GIISZI (id: 9534)
A9GI4G99RAF7I4Z7 (id: 4735)
Z7R74G7G7A44FS9S (id: 2318)
SSSRZ7GAI7S4Z4GG (id: 6136)
S7494R799SSGZ7A7 (id: 1027)
GR4AGAG7F4RIS7AG (id: 9904)
SFI7FGR4R9III4GS (id: 5374)
I74S4RZSIIRA9IGI (id: 5598)
RR4AGA999444A9GG (id: 4845)
7G4SRA777Z4GRGF7 (id: 9224)
SAFRF4I9AFZ4FA4R (id: 361)
FSGAG4A49GAGRS79 (id: 4345)
GASAFGS4GZGG4497 (id: 8175)
IZRSRZF99SRAAR74 (id: 9317)
ZIASG7AGF9I49RRF (id: 3466)
G7R99S9I47ZSARIA (id: 8973)
4ZF9SA7I997IIIIG (id: 3692)
9ZGR9S7ASI9GFA9R (id: 4689)
GG9I9IASSZZZ9I99 (id: 372)
GGR79R4Z99IAG9FR (id: 7195)
GGSFFRSIAAIARI49 (id: 3570)
FIFIAIFAZAA9F99I (id: 5520)
SRGG79A9FZ4ZRF99 (id: 2224)
9IGF79SRIISAFG4A (id: 1681)
ZI4GRGFGGA4IRF9I (id: 790)
9S4G4FGAASR47I7R (id: 5310)
ZIF4SAI79ZF9RGZ4 (id: 2415)
FIAAF974RI99FF4G (id: 5699)
G4SA94Z74I9F9GA4 (id: 9617)
GZG9R4949G49AAF4 (id: 9954)
GI9A49ZRZA4RS49A (id: 19)
S794A9ARRZAZ9ZR9 (id: 7921)
A4FAZA4ZZFI4FS4G (id: 461)
9GA9FIFIFRI77III (id: 907)
R4GI9G7ZGGA4GR79 (id: 3998)
A7FF7A979SGI9Z7I (id: 7674)
RFZZIFASAGSR7ASR (id: 7895)
S974Z4GG7SG4F7IF (id: 4872)
A74RIG7FF99AG9F4 (id: 9953)
R744FAI49RAIRIFA (id: 6594)
I4ZGZIRIZIGGSF9G (id: 5189)
9AFG9GI7IRAI74R4 (id: 4104)
F7IFF9Z9G777FZ9A (id: 8725)
AGS74IR7SZR9IGGI (id: 1030)
9GFIASIR9S9SA7ZG (id: 5129)
SG7AZA7ZIG7F79A4 (id: 4796)
44ZAS49ZR7FS7R97 (id: 1334)
SGFZ9SFRFA7S74F7 (id: 7791)
9ZZ9RGRGIAG4IFZR (id: 2110)
AFARFA77SZ9GI47S (id: 7523)
7AGIA9FFGR74A9AG (id: 1949)
ISA4I79R7494FRI4 (id: 6163)
SRZA4RAIR9A79F7A (id: 9091)
IA749AF7IF9FRZIA (id: 4190)
ZSGFIFZ7IIGGRSA7 (id: 5557)
IAIAZIFS774SGIIG (id: 3926)
IAZS479R9ZAS4FAI (id: 1674)
S4IZZI9FZAI7R49G (id: 9394)
GAI47AG7RIAZRFS4 (id: 5005)
4GFGGFRGSFGGS9I7 (id: 1828)
AIZ4S79AS9A4ZFAA (id: 2047)
ZI9SFG4GZ4GRIRRR (id: 3086)
FG9FIF9I7GI47I9S (id: 6839)
ASFAAGIZRSIAAISG (id: 9364)
G7AS9G4IFFRZ9FZS (id: 1869)


Masz ciekawą sygnaturkę więc spytam: jesteś w stanie wyłapać regularność i odcyfrować id z któregoś poniżej?

Kod
9F9SZZZIRFA74A94
9RRG7GSISGSAAAG4
FIZ9GFZZFFZ9IAA9
SGGI7479ZS997447
ZSSFGSSASA7GS4I4
AARI4G9RGG4RI4IG
7RSAI7Z7RGZFRSR9
I74ASGGRI9R4SAII
ZRZGR799IIIIFRF4
RZ9ZAAI4FSAIGRRG
Crozin
Próbujesz wymyślić koło na nowo w dodatku robiąc to strasznie nieudolnie.

1. mcrypt.
2. base64_encode/base64_decode.
usb2.0
może po prostu wykorzystaj jakieś sprawdzone kodowanie? sha1, des, czy rsa
ja bym tak zrobil:P
fiszol
@Crozin - wynajdywanie kół na nowo to nic złego, gdyby nie to, maybach pewnego księdza miałby drewniane (kammienne?) ;p Wcale nie twierdzę że wynalazłem lepsze, ani nie próbuje nawet takiego zrobić. Dla mnie frajdą w php jest możliwość tworzenia własnych rozwiązań, nie korzystania z gotowych.

@usb2.0 - sha1 hashuje, ja muszę mieć możliwość odwrócenia procesu, odnośnie DES/RSA, to samo co napisałem Crozinowi nt. mcrypt.
Crozin
@fiszol: Wynajdywanie koła na nowo w momencie gdy mamy sprawdzone rozwiązania, które działają w pełnym zakresie naszych oczekiwań oraz nie posiadają żadnych wad (przynajmniej w kontekście naszego problemu) jest... miałem napisać, że w 99% przypadków błędem, ale chyba jest zawsze błędem. To korzystanie z gotowych rozwiązań (tak jak to robisz notorycznie korzystając z dowolnego języka programowania i jego biblioteki standardowej, nie wiem czemu w tym konkretnym przypadku miałbyś tego nie robić) i ulepszanie istniejących, bądź tworzenie nowych w przypadku braku takowych jest motorem napędowym. Jak popatrzysz na tego Maybacha to zobaczysz w nim zadziwiająco dużo rozwiązań z Forda T, które po prostu były ulepszane i ulepszane... żadne nie było wymyślone na nowo.
Cytat
Dla mnie frajdą w php jest możliwość tworzenia własnych rozwiązań, nie korzystania z gotowych.
Nie żebym się czepiał ale to oferuje absolutnie każdy język programowania, a PHP jako takie jest jednym z najmniej przyjaznych środowisk do tworzenia własnych rozwiązań jakie znam.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.