Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Funkcja kodująco - dekodująca ...
Elber
post
Post #1





Grupa: Zarejestrowani
Postów: 381
Pomógł: 12
Dołączył: 9.07.2007

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


Witam, czy istnieje jakaś funkcja która wygeneruje mi pewny ciąg znaków, o jakiś określonych parametrach, tak aby funkcja dekodująca mogła to rozkodować i stwierdzić autentyczność ciągu...trochę to zagmatwane, ale chodzi mi o to aby między kilkoma stornami przesłać taki kod post'em a strony które odbiorą ten ciąg znaków wykonały dane czynności, tylko chodzi mi o to aby to nie była żadna dziura w skrypcie tylko jakieś bezpieczne (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
wookieb
post
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




mbstring
Go to the top of the page
+Quote Post
markonix
post
Post #3





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


Określ kody dla poszczególnych akcji i dodaj jakieś zmienne środowiskowe, o których będą wiedziały te aplikacje.
Np. 2 argument to md5 z daty albo coś takiego.
Go to the top of the page
+Quote Post
Elber
post
Post #4





Grupa: Zarejestrowani
Postów: 381
Pomógł: 12
Dołączył: 9.07.2007

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


Hmm no ale żeby się wszystko trzymało kupy to jak coś zakoduje na jednej stronie i wyślę do drugiej to tam powinno to rozkodować i sprawdzić czy rozkodowany ciąg spełnia jakieś kryteria ... tylko nie mam kompletnie pomysłu jak to zrobić...
Go to the top of the page
+Quote Post
nospor
post
Post #5





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




http://pl2.php.net/manual/en/function.mcrypt-encrypt.php
Go to the top of the page
+Quote Post
Elber
post
Post #6





Grupa: Zarejestrowani
Postów: 381
Pomógł: 12
Dołączył: 9.07.2007

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


nospr mógłbyś trochę rozwinąć wypowiedź ? Bo nie za bardzo wiem (mimo że czytam właśnie o tej funkcji) jak ją użyć w moim przypadku (IMG:style_emoticons/default/sad.gif)
Go to the top of the page
+Quote Post
nospor
post
Post #7





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Chciałeś kodowac jakies dane, tak? No to ta funkcja koduje. A inna funkcja o podobnej nazwie te dane dekoduje.
Go to the top of the page
+Quote Post
Elber
post
Post #8





Grupa: Zarejestrowani
Postów: 381
Pomógł: 12
Dołączył: 9.07.2007

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


Tak wiem. Ale jak np użyję:
  1. function encryptData($value){
  2. $key = "top secret key";
  3. $text = $value;
  4. $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
  5. $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
  6. $crypttext = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $text, MCRYPT_MODE_ECB, $iv);
  7. return $crypttext;
  8. }
  9.  
  10. function decryptData($value){
  11. $key = "top secret key";
  12. $crypttext = $value;
  13. $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
  14. $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
  15. $decrypttext = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $crypttext, MCRYPT_MODE_ECB, $iv);
  16. return trim($decrypttext);
  17. }
i wywołam funkcję encryptData('cos'); to defakto aby sprawdzić czy kod jest prawidłowy muszę w drugim skrypcie zastosować if'a w którym będzie porównanie czy decryptData($_POST['zmienna encryptData('cos')']) == cos a ja chciałbym tego uniknąć (IMG:style_emoticons/default/biggrin.gif) szczerze to nie wiem czy to jest realne (IMG:style_emoticons/default/biggrin.gif) chciałbym aby zakodowany text za każdym razem był inny (IMG:style_emoticons/default/smile.gif)

Da rade tak to zrobić jak sobie wykombinowałem ? Czy nie za bardzo ?

Ten post edytował Elber 19.10.2011, 11:18:06
Go to the top of the page
+Quote Post
Fifi209
post
Post #9





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Możesz dodawać np. liczbę kontrolną na końcu ciągu, po zakodowaniu odpowiednio ją obliczyć i dokleić, potem po drugiej stronie wystarczy sprawdzić czy liczba kontrolna jest poprawna.
Go to the top of the page
+Quote Post
Crozin
post
Post #10





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Opisz dokładnie cały problem. Póki co wiemy, że chcesz coś (de)kodować, sprawdzać poprawność / autentyczność, ale to są tylko jakieś hasła oderwane od rzeczywistości. Napisz konkretnie co i dlaczego chcesz kodować, jakie są te kryteria - jeśli nie będziesz tego w stanie tak opisać podaj jakiś przykład ilustrujący całość problemu. Wtedy będziemy mogli powiedzieć Ci jak się za to zabrać, z czego skorzystać - teraz jak sam widzisz dostajesz "durne" linki, bo nie da się nic więcej napisać.
Go to the top of the page
+Quote Post
Elber
post
Post #11





Grupa: Zarejestrowani
Postów: 381
Pomógł: 12
Dołączył: 9.07.2007

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


Mam sobie stronkę w której mam panel admina....takich stronek bede miał kilka ... ten sam skrypt (IMG:style_emoticons/default/smile.gif) I chcę zrobić jeden główny panelik w którym będę dodawał te wszystkie moje stronki i obok danych tej stronki chcę zrobić przycisk po którym jak wcisnę przeniesie mnie do panelu admina danej stronki i tam będzie się już zalogowanym (IMG:style_emoticons/default/smile.gif) Żeby to było bezpieczne to chcę dane przesyłać postem, w z góry zadeklarowanej zmennej np. $_POST['super_zmienna'] a w zawartości tej zmiennej chcę dać ciąg znaków (coś zakodowane) i chciałbym aby za każdym razem ten ciąg był inny (czyli nie że cały czas przesyłam ten sam klucz) i to leciało by do pliku login.php w danej stronie i tam odebrało tą zmienną i zdekodowało i jakby się zgadzało że ten ciąg jest taki jak być powinien (czyli tutaj jakieś dekodowanie tego) to ustawi sesje na zlogowany i przeniesie do panelu admina (IMG:style_emoticons/default/biggrin.gif)

Nikt nie ma pomysłu żadnego ?
Go to the top of the page
+Quote Post
Crozin
post
Post #12





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


1. Cała komunikacja pomiędzy serwerami powinna być szyfrowana (SSL).
2. Raczej będzie musiał istnieć jakiś prywatny klucz znany tylko przez Twój panel i aplikację klienta na podstawie którego będzie dochodziło do uwierzytelniania. Zauważ, że takie rozwiązanie jest stosowane przez wszystkich (Google, Facebook, Microsoft itd.) gdy potrzeba komunikacji na linii strona giganta <-> czyjaś strona.
Go to the top of the page
+Quote Post
Elber
post
Post #13





Grupa: Zarejestrowani
Postów: 381
Pomógł: 12
Dołączył: 9.07.2007

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


Zrobiłem tak że wysyłam $_POST'em liczbę 11 cyfr, koduję ją w :
  1. function KodujKlucz($value){
  2. $key = "top secret";
  3. $text = $value;
  4. $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
  5. $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
  6. $crypttext = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $text, MCRYPT_MODE_ECB, $iv);
  7. return $crypttext;
  8. }


jednak jak sprawdzam var_dump w skrypecie po zakodowaniu to string ma 32 znaki a w skrypcie do którego poleciał ten kod to ma za każdym razem inną liczbę znaków, zawsze większą niż 32 i przez to nie da się tego rozkodować ... co robię źle ?

Ten post edytował Elber 9.11.2011, 22:54:39
Go to the top of the page
+Quote Post
mls
post
Post #14





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

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


  1. return base64_encode($crypttext);

i oczywiście base64_decode po drugiej stronie, przed zdekodowaniem...
Go to the top of the page
+Quote Post
Elber
post
Post #15





Grupa: Zarejestrowani
Postów: 381
Pomógł: 12
Dołączył: 9.07.2007

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


Funkcja dekodująca wygląda tak:

  1. function DekodujKlucz($value){
  2. $key = "top secret";
  3. $crypttext = (float)$value;
  4. $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
  5. $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
  6. $decrypttext = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $crypttext, MCRYPT_MODE_ECB, $iv);
  7. return trim($decrypttext);
  8. }


I jak dałem to base64_encode i base64_decode to wysyła postem ten sam fragment kodu, jednak nie działa rozkodowanie ...
Go to the top of the page
+Quote Post
Niktoś
post
Post #16





Grupa: Zarejestrowani
Postów: 1 195
Pomógł: 109
Dołączył: 3.11.2011

Ostrzeżenie: (10%)
X----


A czy ta funkcja kodująca nie zwraca czasami cyfry i litery?Bo ja tu widzę jakieś rzutowanie na float przy dekodowaniu:
$crypttext = (float)$value;
Może to będzie powodowało błąd ,ale pewności nie mam.

Ten post edytował Niktoś 9.11.2011, 23:57:58
Go to the top of the page
+Quote Post
Elber
post
Post #17





Grupa: Zarejestrowani
Postów: 381
Pomógł: 12
Dołączył: 9.07.2007

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


Wszystko działa (IMG:style_emoticons/default/smile.gif) Wczoraj było już późno i mój mózg nie funkcjonował tak jak powinien (IMG:style_emoticons/default/smile.gif) Jest OK dzięki (IMG:style_emoticons/default/smile.gif)
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: 22.08.2025 - 16:34