Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zaszyfrowanie liczby wlasnym szyfrem
Forum PHP.pl > Forum > Przedszkole
kuna
Mam takie liczby:

524000166
2418424411
1489279192
3320874509
...

Posiadam takze baze ze znakami, jest ich okolo 32k, sa one w pliku.

Mam zamiar za pomoca tych znakow zakodowac te liczby, tak aby wykorzystac przynajmniej z 500 znakow z tablicy na jedna taka liczbe.

Powiem szczerze ze nie mam pojecia jak to zrobic, ptobowalem na kilka sposobow ale w pewnym momencie ciag zaczyna sie powtarzac, a ja chce aby kazda liczba byla unikalnym ciagiem.
Marcin_m
Użyj zwykłego xora (dodatkowo możesz użyć wbudowanej w php funkcji crypt() );

Dla danej wartości i klucza możesz zrobić tak:

  1. <?php
  2.  
  3. $wartosc=5040;
  4. $klucz=5466;
  5. $zakodowana_wartosc=($wartosc ^ $klucz);
  6. echo $zakodowana_wartosc;
  7.  
  8. ?>


Ponadto w ten sposób zakodowaną wartość możesz odczytać przy pomocy klucza

  1. <?php
  2.  
  3. $klucz=5466;
  4. echo ($zakodowana_wartosc ^ $klucz);
  5.  
  6. ?>


Możesz teraz "miksować" szyfrowanie np. dla danego klucza każdy znak szyfrować każdym znakiem klucza (czyli w tym przypadku);
5->5
0->4
4->6
0->6

i kiedy znaków do szyfrowania jest więcej po prostu przydzielasz wartości klucza od początku (ponoć roszyfrowanie tak zakodowanego ciągu bez znajomości klucza drastycznie maleje dla kluczy o wielkości zbliżonej do szyfrowanego tekstu).
kuna
Nie zrozumielismy sie, ty mi podales skrypt dla liczb, a dla znakow juz on nie dziala sad.gif
Marcin_m
Dla całych słów nie, ale przecież słowa można rozbić na litery:

  1. <?php
  2. $zakodowana=array();
  3. $rozkodowana=array();
  4. $wartosc='Ala ma kota';
  5. $klucz='haslo';
  6. (array)$wartosc;
  7. (array)$klucz;
  8.  
  9.  $j=0;//j bedzie indeksem klucza
  10.  
  11. for($i=0;$i<strlen($wartosc);$i++)
  12. {
  13. $zakodowana[$i]=($wartosc[$i] ^ $klucz[$j]);
  14.  $j++;
  15.  //jeżeli osiągnelismy koniec klucza to zaczynamy od początku
  16.  if($j>=strlen($klucz))
  17.  {
  18.  $j=0;
  19. }
  20.  }
  21.  
  22. for($i=0;$i<count($zakodowana);$i++)
  23. {
  24. echo $zakodowana[$i]; //wyświetlamy zakodowaną wartość
  25. }
  26.  
  27.  $j=0; //zerujemy indeks klucza
  28. for($i=0;$i<count($zakodowana);$i++)
  29. {
  30.  $rozkodowana[$i]=($zakodowana[$i] ^ $klucz[$j]);
  31.  $j++;
  32.  if($j>=strlen($klucz)){$j=0;}
  33.  }
  34. echo '<br>';
  35.  for($i=0;$i<count($rozkodowana);$i++)
  36. {
  37. echo $rozkodowana[$i]; //wyswietlamy rozkodowaną wartość
  38. }
  39. ?>
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.