Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> szyfrowania z kluczem, nie hashowanie
phoenix84
post 10.12.2010, 06:17:02
Post #1





Grupa: Zarejestrowani
Postów: 218
Pomógł: 0
Dołączył: 14.04.2004
Skąd: Słupsk, Nowy Sącz

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


Witam,

temat ciagle powielany na forum, ale ciagle nie moge znalezc tego, czego szukam... chodzi o zwyczajne szyfrowanie z kluczem... po przecyztaniu dziesiatek artykulow o wszystkim tylko nie o tym czego szukam, musialem zalozyc nowy watek smile.gif... szukam "prostej" funkcji w PHP (jesli istnieje) do szyfrowania i deszyfrowania informacji... nie chodzi mi o hashowania, i wlasciwie nie o RSA (nie chce mi sie generowac kluczy)... chodzi o cos dokladnie takiego: szyfruj (wiadomosc, klucz) oraz deszyfruj (szyfr, klucz)... bo az m sie wierzyc nie chce ze taka funkcja nie isntieje... bo wszedzie albo wraca sie notorycznie do hashy, albo do jakichs skomlikowanych algorytmow typu RSA, albo conajmniej kilkulinijkowych implementacji, a ja chce po prostu szyfrowac za pomoca klucza/hasla i juz... czy to czego szukam w ogole nie istnieje? czy jest tak niepopularne, ze sie niestosuje?

pozdrawiam,

k.
Go to the top of the page
+Quote Post
kalmaceta
post 10.12.2010, 12:18:07
Post #2





Grupa: Zarejestrowani
Postów: 183
Pomógł: 24
Dołączył: 4.12.2010

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


w starszych czasach wystarczyło XOR'owanie, w php też jest (operator ^) chociaż to nie zadziała jak kiedyś, trzeba trochę na około. Polecam użyć prostej klasy (ze strony http://snipplr.com/view.php?codeview&id=8421)


  1. <?php
  2. class xorCrypt {
  3. private $password = NULL;
  4.  
  5. public function set_key($password) {
  6. $this->password = $password;
  7. }
  8.  
  9. private function get_rnd_iv($iv_len) {
  10. $iv = '';
  11. while ($iv_len-- > 0) {
  12. $iv .= chr(mt_rand() & 0xff);
  13. }
  14. return $iv;
  15. }
  16.  
  17. public function encrypt($plain_text, $iv_len = 16) {
  18. $plain_text .= "\x13";
  19. $n = strlen($plain_text);
  20. if ($n % 16) {
  21. $plain_text .= str_repeat("\0", 16 - ($n % 16));
  22. $i = 0;
  23. $enc_text = $this->get_rnd_iv($iv_len);
  24. $iv = substr($this->password ^ $enc_text, 0, 512);
  25. while ($i < $n) {
  26. $block = substr($plain_text, $i, 16) ^ pack('H*', sha1($iv));
  27. $enc_text .= $block;
  28. $iv = substr($block . $iv, 0, 512) ^ $this->password;
  29. $i += 16;
  30. }
  31. return base64_encode($enc_text);
  32. } else {}
  33. }
  34.  
  35. public function decrypt($enc_text, $iv_len = 16) {
  36. $enc_text = base64_decode($enc_text);
  37. $n = strlen($enc_text);
  38. $i = $iv_len;
  39. $plain_text = '';
  40. $iv = substr($this->password ^ substr($enc_text, 0, $iv_len), 0, 512);
  41. while ($i < $n) {
  42. $block = substr($enc_text, $i, 16);
  43. $plain_text .= $block ^ pack('H*', sha1($iv));
  44. $iv = substr($block . $iv, 0, 512) ^ $this->password;
  45. $i += 16;
  46. }
  47. return stripslashes(preg_replace('/\\x13\\x00*$/', '', $plain_text));
  48. }
  49. }
  50.  
  51. $xorCrypt = new xorCrypt();
  52. $xorCrypt->set_key("Your Secret Key");
  53.  
  54. $text = "hello world!";
  55. $encrypted = $xorCrypt->encrypt($text);
  56.  
  57. echo $encrypted;
  58. echo "<br />";
  59. echo $xorCrypt->decrypt($encrypted);
  60. ?>


ewentualnie coś takiego

  1. function x_Encrypt($string, $key)
  2. {
  3. for($i=0; $i<strlen($string); $i++)
  4. {
  5. for($j=0; $j<strlen($key); $j++)
  6. {
  7. $string[$i] = $string[$i]^$key[$j];
  8. }
  9. }
  10.  
  11. return $string;
  12. }
  13.  
  14. function x_Decrypt($string, $key)
  15. {
  16. for($i=0; $i<strlen($string); $i++)
  17. {
  18. for($j=0; $j<strlen($key); $j++)
  19. {
  20. $string[$i] = $key[$j]^$string[$i];
  21. }
  22. }
  23.  
  24. return $string;
  25. }


Ten post edytował kalmaceta 10.12.2010, 12:23:00


--------------------
kAlmAcetA
Go to the top of the page
+Quote Post
Quadina
post 10.12.2010, 12:23:45
Post #3





Grupa: Zarejestrowani
Postów: 200
Pomógł: 38
Dołączył: 1.12.2010
Skąd: Wrocław

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


wpisuj w google same słowa kluczowe opisujace Twoje pytanie, znajdziesz prawie zawsze na pierwszym miejscu ;-)


--------------------
Warsztat: NetBeans 7.2 Beta, PHP, MySQL, PostgreSQL, Symfony (<=1.4), Diem, Java, Sieci neuronowe
Go to the top of the page
+Quote Post
Mephistofeles
post 10.12.2010, 15:02:47
Post #4





Grupa: Zarejestrowani
Postów: 1 182
Pomógł: 115
Dołączył: 4.03.2009
Skąd: Myszków

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


http://www.php.net/manual/en/mcrypt.ciphers.php

Ten post edytował Mephistofeles 10.12.2010, 15:02:57
Go to the top of the page
+Quote Post
phoenix84
post 10.12.2010, 21:53:19
Post #5





Grupa: Zarejestrowani
Postów: 218
Pomógł: 0
Dołączył: 14.04.2004
Skąd: Słupsk, Nowy Sącz

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


te proste funkcje co dales na xor to jest chyba doakldnie to czego szukalem...

dzieki!
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 14:29