Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php/mysql] ponoć dane są szyfrowane..
Forum PHP.pl > Forum > Przedszkole
kaszanka
hi,

Tak mi wieczorową porą przyszło na myśl.. wielu z nas ma konta internetowe, profile w poważnych portalach gdzie przechowywane są nasze dane jak nazwiska, adres, pesel, itd, często takie firmy chwalą się iż bardzo dbają o nasze bezpieczeństwo więc wszystkie dane zwłaszcza osobowe są zaszyfrowane na ich serwerach więc nie ma ich w razie czego od razu jak odczytać zwykłym tekstem.
No ok ale skoro loguje się do jakiegoś serwisu gdzie ponoć wszyskie dane są zaszyfrowane to jak to jest, że wchodząc np do zakładki moje dane osobowe, widzę wszystko zwykłym tekstem, więc jak to jest w praktyce? bo przecież skoro dane są w rzeczywistości szyfrowane a ja po zalogowaniu się je widzę to z tym szyfrowaniem to jakaś ściema czy dane w chwili mojego zalogowania się jakoś zostają odszyfrowane?

Sory za lamerkie pytanie winksmiley.jpg
skowron-line
Cytat(kaszanka @ 2.08.2009, 22:00:02 ) *
bo przecież skoro dane są w rzeczywistości szyfrowane a ja po zalogowaniu się je widzę to z tym szyfrowaniem to jakaś ściema czy dane w chwili mojego zalogowania się jakoś zostają odszyfrowane?

A co to za problem zaszyfrować a pozniej odszyfrować twoje dane questionmark.gif Algorytmy szyfrujące to zupełnie co innego niż jednokierunkowe funkcje skrótu to co sie zakodowało można odkodować, posiadająć pewną wiedze taka jak klucz prywatny.
in5ane
Niektóre dane można banalnie zaszyfrować i rozszyfrować. Np. w base64 mój nick (in5ane) wygląda tak: aW41YW5l.
kaszanka
Ok, powiedzmy że mam w bazie kolumnę "imie_nazwisko" i chce w niej przechowywać dane w postaci zaszyfrowanej, formularz dodania danych szyfruje wprowadzane dane, w bazie są w postaci zaszyfrowanej, user po zalogowaniu się do swojego panelu widzi dane w postaci odszyfrowanej.
Ale skoro to jest takie proste to jaki sens ma szyfrowanie danych w bazie skoro można je bez problemu odszyfrować (np po wykradzeniu tabeli z bazy) czym to się chwalą różne portale?
Fifi209
A skąd będziesz wiedział jakim algorytmem jest zaszyfrowany tekst? snitch.gif
skowron-line
Trudność w odszyfrowaniu danych polega na zdobyciu kluczna prywatnego który dla każdego usera może ( i pewnie jest ) inny.

@DOWN

google-> blowfish php
google-> rsa php
google-> aes php

i wiele innych wystarczy chwile poszukać wpisać hasło kryptografia.
kaszanka
@fifi209 ja dopiero poznaje pierwsze kroki przy szyfrowaniu smile.gif

Ok, to w takim razie jak zaszyfrować text typu "Tomasz Kowalski" a potem go odszyfrować posiadając swój ustalony algorytm czy klucz prywatny?
Fifi209
Do szyfrowania używa się przeróżnych metod i algorytmów. Trudno określić. Zainteresuj się kryptografią.
kaszanka
Podajcie proszę jakiś przykład zaszyfrowania i odszyfrowania teksu, naprowadźcie mnie troszkę smile.gif
in5ane
Np. szyfrując w ROT możemy sobie ustalić tzw. "dowolne przesunięcie" (liczba), np.: 4. I dla przykładu Tomasz Kowalski w formie zaszyfrowanej będzie: Xsqewd Osaepwom. I np. dla każdego użytkownika do "dowolne przesunięcie" może być dowolne (losowe). I nawet jak cracker dostanie bazę i odgadnie rodzaj szyfru, to nie będzie znał przesunięcia.

@edit: są też metody, których nie da się rozszyfrować, np. md5. I np. hasło zakodowane w bazie w md5, nigdy nie zostanie wyświetlone gdzieś w panelu zarządzania na stronie czy wysłane e-mailem, pewnie spytasz, w jaki sposób się wtedy logujesz, a no prosto. Jak wysyła się hasło z formularza i porównuje je się z tym w bazie, to najpierw je się również szyfruje metodą md5 i jeżeli jest równe pierwsze drugiemu, to zostaniesz zalogowany.
Wicepsik
  1. <?php
  2. $code = 'Wiceps';
  3. echo base64_encode($code); // V2ljZXBz
  4.  
  5. $decode = 'V2ljZXBz';
  6. echo base64_decode($decode); // Wiceps
  7. ?>
kaszanka
@Wicepsik o właśnie o coś takiego mi chodzi, tylko tutaj znając np postać zaszyfrowanej frazy, bez problemu ją odszyfrujemy więc trzeba by to skomplikować tymi prywatnymi kluczami?
in5ane
Cytat(kaszanka @ 2.08.2009, 22:32:07 ) *
@Wicepsik o właśnie o coś takiego mi chodzi, tylko tutaj znając np postać zaszyfrowanej frazy, bez problemu ją odszyfrujemy więc trzeba by to skomplikować tymi prywatnymi kluczami?


Napisałem Ci przykład wyżej, przeczytaj dokładnie post.
kaszanka
Właśnie szukam przykładów szyfrowania za pomocą ROR w php ale jakoś nie bardzo ;/
Fifi209
Chwilka szukania i masz algorytmy:

http://www.kryptografia.com/algorytmy/algorytmy.html
kaszanka
@fifi209 widzę tam praktycznie tylko przykłady w języku C co mi jednak nic nie mówi ;/

Póki co szukam przykładów o base64_decode z tymi przesunięciami czy prywatnymi kluczami by znając zaszyfrowany tekst nie dało się odszyfrować tą samą funkcją.
in5ane
Te przesunięcia są w ROT. Masz tutaj fajny i dokładny opis tej metody: http://algorytm.org/index.php?option=com_c...1&Itemid=29

Aha i chciałeś skrypt. Proszę bardzo, do ROT13 istnieje w php specjalna funkcja (manual nie boli...).

  1. <?php
  2. echo str_rot13('Tekst do zakodowania');
  3. ?>
kaszanka
A no widzisz, wyżej chyba pisano było ROR a nie ROT winksmiley.jpg

a hmm to działa tylko na znaki, na liczby już nie?

  1. <?php
  2. echo str_rot13('Tekst do zakodowania 2 4 1 przykład');
  3. ?>

Grxfg qb mnxbqbjnavn 2 4 1 cemlxłnq
in5ane
Bo się pomyliłem, już poprawiłem. Dokładnie to chodzi o ROT13. Istnieje również wersja ROT47.
kaszanka
hmm, no to odpada, potrzebuje coś prostego (jak dla laika) do szyfrowania i deszyfrowania liter i znaków z własnym kluczem prywatnym by nie było to zwykłe standardowe szyfrowanie tylko jakiś dodatek który tylko ja będę znał - jak dobrze mówię smile.gif
Quantum
pierwszy wynik od wujka google pod hasłem: encrypt decrypt php winksmiley.jpg

  1. <?php
  2. function encrypt($string, $key) {
  3. $result = '';
  4. for($i=0; $i<strlen($string); $i++) {
  5. $char = substr($string, $i, 1);
  6. $keychar = substr($key, ($i % strlen($key))-1, 1);
  7. $char = chr(ord($char)+ord($keychar));
  8. $result.=$char;
  9. }
  10.  
  11. return base64_encode($result);
  12. }
  13.  
  14. function decrypt($string, $key) {
  15. $result = '';
  16. $string = base64_decode($string);
  17.  
  18. for($i=0; $i<strlen($string); $i++) {
  19. $char = substr($string, $i, 1);
  20. $keychar = substr($key, ($i % strlen($key))-1, 1);
  21. $char = chr(ord($char)-ord($keychar));
  22. $result.=$char;
  23. }
  24.  
  25. return $result;
  26. }
  27. ?>
skowron-line
Widać lenia masz że sam w google nie chcesz poszukać
http://www.chilkatsoft.com/p/php_blowfish.asp
http://pl.php.net/manual/en/ref.mcrypt.php jak ktoś napisał "manual nie boli"
kaszanka
Panowie, dziękuje bardzo, już mam dużo rozjaśnione.
Obecnie wynalazłem coś takiego: (może się komuś przyda)

  1. <?php
  2. function Encrypt($string, $key)
  3. {
  4.    if (extension_loaded('mcrypt') == true)
  5.    {
  6.    return base64_encode(mcrypt_encrypt(MCRYPT_BLOWFISH, substr($key, 0, mcrypt_get_key_size(MCRYPT_BLOWFISH, MCRYPT_MODE_ECB)), trim($string), MCRYPT_MODE_ECB, mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_BLOWFISH, MCRYPT_MODE_ECB), MCRYPT_RAND)));
  7.    }
  8.    return false;
  9. }
  10.  
  11. function Decrypt($string, $key)
  12. {
  13.    if (extension_loaded('mcrypt') == true)
  14.    {
  15.    return trim(mcrypt_decrypt(MCRYPT_BLOWFISH, substr($key, 0, mcrypt_get_key_size(MCRYPT_BLOWFISH, MCRYPT_MODE_ECB)), base64_decode($string), MCRYPT_MODE_ECB, mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_BLOWFISH, MCRYPT_MODE_ECB), MCRYPT_RAND)));
  16.    }
  17.    return false;
  18. }
  19. echo Encrypt('Tekst do zakodowania', 'moje_tajne_haslo');
  20. echo Decrypt('aPgLkDYwZMQIzmonsW1LUkdfpG+Vt27J', 'moje_tajne_haslo');
  21. ?>


No ale kolejny problem ;/
W bazie danych w kolumnie 'imie' mam powyższy zakodowany tekst w postaci 'aPgLkDYwZMQIzmonsW1LUkdfpG+Vt27J'
Tylko teraz jak robię na stronie wyszukiwarkę danych w kolumnie 'imie' to jak wykonać zapytanie SQL które w formularzu szukania podaje dane np w postaci %Tekst% to aby znanazł wszystkie wpisy pasująca do 'Tekst'?
Jakby nie było to zaszyfrowane to banał ale teraz? nie mam pojęcia jak to zrobić :|
Czy nie pozostaje nic innego jak przy każdy przeszukaniu bazy wyciągnąć wszystkie rekordy z kolumny 'imie', odszyfrować i wżucić do tablicy z której dopiero będę wyszukiwał?
Quantum
  1. <?php
  2. $key = 'moje_tajne_haslo';
  3. $encrypted = Encrypt($_POST['imie'], $key);
  4. $query = 'SELECT * FROM `users` WHERE `imie` like %'.$encrypted.'%';
  5. ?>
? blinksmiley.gif

edit:

w sumie to zwróci jeden rekord tongue.gif ale innego sposobu chyba nie ma, jedynie możesz zrobić wyszukiwarkę z ajax "autosuggest" i będzie przeszukiwać bazę z każdym nowym znakiem..

a teraz takie ogólne pytanie, jest sens kodowania tak podstawowych danych jak imię ? strony, które przechowują dane w ten sposób nie dają wyszukiwarki dla takich "poufnych" danych. winksmiley.jpg
kaszanka
@sniffer32 sprawdzałem ten sposób ale on działa tylko jeżeli w polu wyszukiwania podany dokładnie ten sam ciąg znaków co jest w bazie danych, gdy damy do szukania tylko część to nie zadziała.

Z tym imieniem to tylko taki przykład, robię sobie bazę w której będą przechowywane również inne informację które bezpośrednio w bazie chce mieć zakodowane, nastomiast sam będę miał taki swój panelik dzięki któremu będę w razie potrzeby mógł np wyszukać pewną osobę.
skowron-line
@kaszanka zaszyfruj wszystkie dane w bazie danych a pozniej zobacz ile wazy.
Moj psor od BSI powiedzial kiedyś ze danych w bazach się nie szyfruje tylko backupy bazdanych.
kaszanka
@skowron-line mi chodzi głównie o naukę praktyczną, by widzieć na własne oczy jak to działa, etc smile.gif
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.