Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Szyfrowanie XOR w php - coś nie działa., strona zatrzymuje przy ładowaniu
usercontrol
post
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 17.02.2006

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


Witam !
Naskrobałem coś takiego:
  1. <?
  2. function XOREn($CodeKey, $DataIn)
  3. {
  4.  
  5. for ($DataPtr=1; strlen($DataIn); $DataPtr++){
  6.  
  7. $XORValue1 = ord(substr($DataIn, $DataPtr, 1));
  8. $XORValue2 = ord(substr($CodeKey, (($DataPtr % strlen($CodeKey)) + 1), 1));
  9. $DataOut .= chr($XORValue1 ^ $XORValue2);
  10. }
  11. return $DataOut;
  12.  
  13. }
  14. ?>
  15.  
  16. Moja stronka !<bR>
  17. oto wartość XOR'a: "
  18. <?
  19. $CK="muahaha";
  20. $DataX="haselko";
  21. echo XOREn($CK, $DataX);
  22. ?>


To ma być szyfrowanie algorytmem XOR, jednak przy ładowaniu tego pliku strona jakgdyby "staje": W operze nic sie nie wyswietla i pisze caly czas "łączenie" co świadczy o ładowaniu strony..
co napisałem nie tak?

pozdrawiam
Go to the top of the page
+Quote Post
crash
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 196
Pomógł: 2
Dołączył: 17.01.2004
Skąd: Sosnowiec

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


Huh (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Bierzesz się za "szyfrowanie" a nie wiesz jak używać pętli for. Ciekawe...
Go to the top of the page
+Quote Post
usercontrol
post
Post #3





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 17.02.2006

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


Ehh...
Mogłem sie domyslic, ze natrafie na lamera ktory zamiast pomoc tylko opieprzy..
Zdaje mi sie ze to jest dzial dla poczatkujacych. widze, ze poczatkujacy robiacy typowe bledy nie maja nic do gadania.
Programowalem wczesniej w innych jezykach, wiem do czego sluzy FOR i jak dziala, zapewniam cie, ze kazdemu programiscie zdarza sie pomylka


pozdrawiam

Ten post edytował usercontrol 17.02.2006, 21:18:36
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #4





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

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


"lamer to ten kto zbyt czesto okresla innym mianem lamera"

Zle ustawiles warunek koncowy petli:
strlen($DataIn)
niby kiedy przyjmie to wartosc FALSE lub zero -- zwsze bedzie zwracac dlugosc $DataIn, ktora to nie zostaje modyfikowana?

i co teraz powiesz?
Go to the top of the page
+Quote Post
usercontrol
post
Post #5





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 17.02.2006

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


Cytat(dr_bonzo @ 2006-02-17 20:23:45)
i co teraz powiesz?

Dobra, sorry za okreslenie "lamer", ale moze ktos mi wyjasni PO CO sie wypowiadal, jesli jego wypowiedz nie miala na celu pomóc, tylko jeszcze opie* ?
Człowieku, to dział dla poczatkujacych ! Kazdy mial swoj poczatek i popelnial bledy !
-----------------
dzieki za pomoc

pozdr

Ten post edytował usercontrol 17.02.2006, 21:27:37
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #6





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

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


Mimo to wskazal ci miejsce bledu.
Go to the top of the page
+Quote Post
crash
post
Post #7





Grupa: Przyjaciele php.pl
Postów: 2 196
Pomógł: 2
Dołączył: 17.01.2004
Skąd: Sosnowiec

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


Skoro wg. Ciebie podanie linka do strony w manualu opisującej dokładnie jak powinno się używać pętli for nie jest pomocą to ja już nic nie wiem.

P.S. Twoja funkcja nie koduje dobrze ciągu, bo nie bierze pod uwagę pierwszego znaku (indeks znaków w ciągu zaczyna się od 0, a nie od 1).
Go to the top of the page
+Quote Post
usercontrol
post
Post #8





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 17.02.2006

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


Cytat
Huh (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Bierzesz się za "szyfrowanie" a nie wiesz jak używać pętli for. Ciekawe...


O to chodziło.

Poprawiłem kodzik, i chyba nie koduje jak powinno:

  1. <?
  2. $CK="muahaha";
  3. $DataX="haselkyreybyi54y690uiv50692,34iv905u90yk4u9ty8ueiogyjdrhyio45uyioo";
  4. print XOREn($CK, $DataX);
  5.  
  6. function XOREn($CodeKey, $DataIn)
  7. {
  8.  
  9. for ($DataPtr=0; $DataPtr <= strlen($DataIn); $DataPtr++){
  10.  
  11. $XORValue1 = ord(substr($DataIn, $DataPtr, 1));
  12. $XORValue2 = ord(substr($CodeKey, (($DataPtr % strlen($CodeKey)) + 1), 1));
  13. $DataOut .= chr($XORValue1 ^ $XORValue2);
  14. }
  15. return $DataOut;
  16.  
  17. }
  18.  
  19. ?>


Czy coś jeszcze jest tu nie tak?

pozdrawiam
Go to the top of the page
+Quote Post
Bastion
post
Post #9





Grupa: Zarejestrowani
Postów: 505
Pomógł: 0
Dołączył: 8.01.2005

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


taaa

zmien

Kod
for ($DataPtr=0; $DataPtr <= strlen($DataIn); $DataPtr++){


na

Kod
$len = strlen($DataIn);
for ($DataPtr=0; $DataPtr <= $len; $DataPtr++){


oraz

Kod
$XORValue2 = ord(substr($CodeKey, (($DataPtr % strlen($CodeKey)) + 1), 1));

na
Kod
$XORValue2 = ord(substr($CodeKey, (($DataPtr % $len) + 1), 1));


Po co petla ma wywolywac 2000x funkcje strlen w przypadku gdy ciag znakow zawiera 1000 znakow

aaa... w ogole to ja bym to zrobil tak :

  1. <?php
  2. function xor_crypt($str, $key)
  3. {
  4.  $slen = strlen($str);
  5.  $klen = strlen($key) - 1;
  6.  
  7.  $j =0; $out = '';
  8.  
  9.  for ($i = 0; $i < $slen; $i++)
  10.  {
  11. $out .= $str[$i] ^ $key[$j];
  12. ($j == $klen) ? $j = 0 : $j++;
  13.  }
  14.  return $out;
  15. }
  16.  
  17. ?>


Ten post edytował Bastion 17.02.2006, 22:12:54
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: 15.09.2025 - 19:26