Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Mcrypt-szyfrowanie bazy MySql
Forum PHP.pl > Forum > PHP
Cliassi
Witam, ktoś wie jak zaszyfrować jakieś pole w bazie danych np. numer karty kredytowej a potem odszyfrować za pomocą klucza Mcryptem? nie odsyłajcie do manuala bo tam nie ma przykładu z bazą a gdy sprobujemy zapisac wynik szyfrowania do bazy to potem nie odszyfrowuje w całości
greycoffey
Pokaż kod, a może powiemy Ci dlaczego ucina tekst. Do tego strukturę bazy - kodowanie zwiększa objętość danych o ~30% (mniej więcej), więc może zamieszczasz dane w zbyt małym polu?
Cliassi
nie mam przykładu poniewaz do konca nie udalo mi sie tego zrobić. Jeśli ktoś ma działający skrypt z zapisem do bazy to chętnie bym go sobie przerobił.
lukaskolista
Cytat
nie odsyłajcie do manuala bo tam nie ma przykładu z bazą
mimo wszystko http://php.net/manual/en/book.mcrypt.php. Nie wiem co za problem dodac dane zaszyfrowane po stronie skryptu php do bazy, na prawde nie rozumiem.

Cytat
a gdy sprobujemy zapisac wynik szyfrowania do bazy to potem nie odszyfrowuje w całości
a moze tak odpowiedni typ pola i kodowanie - wtedy na pewno odszyfruje
Cliassi
a mozesz sprawdzic czy działa Ci ten kod:


  1. $klucz_szyfrujacy="DyUi942i2274H45PqTiokO6A";
  2.  
  3. $nazwa="bWhTKYlr2e/cx8ZzRZ1n9Q==";
  4.  
  5. $nazwa = decrypt($nazwa, $klucz_szyfrujacy);
  6.  
  7. echo"$nazwa";


decrypt bierzesz z przykładu z manulala
lukaskolista
Cytat
string mcrypt_decrypt ( string $cipher , string $key , string $data , string $mode [, string $iv ] )
Skad mam wiedziec, jakiego algorytmu uzywasz i w jakim trybie to wykonujesz? Na 100% robisz to po prostu zle, dlatego nie dziala. Wrzuc caly kod to zobaczemy co da sie zrobic
Tadek888
W przykładach z manuala jest mało akurat o Mcrypcie za to jak zawsze niezawodne są komentarze czytelników.
Tam znajdujesz gotowy skrypt - jeśli nadal nie czaisz - patrzysz na manual jeszcze raz.

Mi w taki sposób się udało i śmiga smile.gif
Cliassi
A moglbys podaćkod jak to zrobiłeś ? bo kompletnie nie wiem jak to zaszyfrować sad.gif i gdzie najlepiej trzymać klucz ? na innym serwerze ?biggrin.gif
regen1992
Jeśli ktoś ma działający skrypt z zapisem do bazy to chętnie bym go sobie przerobił.
Cliassi
Ogolem jak probuje odszyfrować kod z bazy funkcją z manuala to wyskakuje takie coś:

  1. Ek[szczykiewicz@łękołody.pl
greycoffey
Nie chcesz podać kodu, nie dziw się, że nikt nie pomoże.
Cliassi
  1. html>
  2. <head>
  3.  
  4. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  5. </head>
  6. <body>
  7. <?php
  8. mysqli_set_charset($dbc, "utf8");
  9. require_once('includes/dbc_connect.php');
  10.  
  11. $q=" SELECT * FROM users WHERE id='3'";
  12. $r=@mysqli_query($dbc,$q);
  13. $row=mysqli_fetch_assoc($r);
  14. $dece=$row['email'];
  15.  
  16.  
  17.  
  18. $stuff="$dece";
  19. $key="XiTo74dOO09N48YeUmuvbL0E";
  20.  
  21. function nl() {
  22. echo "<br/> \n";
  23. }
  24. $iv = mcrypt_create_iv (mcrypt_get_block_size (MCRYPT_TripleDES, MCRYPT_MODE_CBC), MCRYPT_DEV_RANDOM);
  25.  
  26. // Encrypting
  27. function encrypt($string, $key) {
  28. $enc = "";
  29. global $iv;
  30. $enc=mcrypt_cbc (MCRYPT_TripleDES, $key, $string, MCRYPT_ENCRYPT, $iv);
  31.  
  32. return base64_encode($enc);
  33. }
  34.  
  35. // Decrypting
  36. function decrypt($string, $key) {
  37. $dec = "";
  38. $string = trim(base64_decode($string));
  39. global $iv;
  40. $dec = mcrypt_cbc (MCRYPT_TripleDES, $key, $string, MCRYPT_DECRYPT, $iv);
  41. return $dec;
  42. }
  43.  
  44. //$encrypted = encrypt($stuff, $key);
  45. $decrypted = decrypt($stuff, $key);
  46.  
  47. //echo "Encrypted is ".$encrypted . nl();
  48. echo "Decrypted is ".$decrypted . nl();
  49.  
  50.  
  51.  
  52. //$q=" INSERT INTO users (email) VALUES ('$encrypted')";
  53. //$r=@mysqli_query($dbc,$q);
  54. ?>
  55. </body>
  56. </html>
  57.  
  58.  
darko
Hasło do 255 znaków przechowuj w polu typu TINYBLOB, wtedy nie będzie problemów z rozszyfrowaniem, a tutaj masz listę funkcji szyfrujących, resztę już Ci opisano wyżej.
Cliassi
nadal są krzaki na początku sad.gif

Chciałem użyć funkcji AES ale na wywalilo mi ze nie ma takiej funkcji
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.