Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zaszyfrowane danych indywidualnym kluczem
Forum PHP.pl > Forum > PHP
Cliassi
Witam, czy jest możliwośc aby tak zaszyfrować dane usera aby tylko on jeden miał do nich dostęp(klucz) oraz admin ? myślałem nad hasłem ale z kolei jesli ktos sie dowie ze to klucz to wtedy po włamaniu do bazy zna klucz. Daloby rade aby kluczem było by hasło przed shashowaniem ? tylko wtedy jak admin by się dostał do danych ?
cv65
mcrypt_encrypt
Cliassi
znam tą funkcję jednak nie wiem jak stworzyć do niej klucz. Nie chce jednego klucza dla wszystkich danych. Każdy user ma swój klucz do rozszyfrowania no i admin tez musi miec. Pomysl z hasłem nie byłby zły gdyby był w formie jawnej a potem hashowany do klucza ale nie moge trzymać jawnego hasła w bazie
lukaskolista
Po co kombinujesz? sha256 + salt do hashowania hasel wystarczy, robisz powazny blad dajac mozliwosc relatywnie latwego odkodowania hasla poprzez algorytm symetryczny.
Cliassi
nie chodzi mi o hashowanie haseł tylko o wygenerowanie indywidualnego klucza dla odszyfrowania danych usera i kombinuje jak je stowrzyć. hasło szyfruje sha1
cv65
  1. function encryptData($value, $key){
  2.  
  3. $text = $value;
  4. $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
  5. $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
  6. $crypttext = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $text, MCRYPT_MODE_ECB, $iv);
  7. return $crypttext;
  8. }
  9.  
  10. function decryptData($value, $key){
  11.  
  12. $crypttext = $value;
  13. $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
  14. $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
  15. $decrypttext = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $crypttext, MCRYPT_MODE_ECB, $iv);
  16. return trim($decrypttext);
  17. }


I daj jako $key swój klucz
Cliassi
Ale chodzi mi o sam KLUCZ! Na jakiej zasadzie go generować aby każdy user miał swój indywidualny $key a admin dostep do wszystkich danych
Crozin
Szczerzę wątpię by dało się tutaj cokolwiek zdziałać. Mógłbyś nam nakreślić jaki jest cel tego? Być może da się to rozwiązać w inny sposób.
cv65
O ile dobrze myśle to te klucze będziesz przechowywał w tabeli.
Utwórz funkcje która wylosuje sobie jakieś liczby do tego dodaj jeszcze uniqid(), zaszyfruj to jakaś metodą.
I sprawdzaj czy istnieje taki klucz w bazie jeżeli istnieje to losuj funkcją kolejny ciąg
Cliassi
no wlasnie klucza nie chce trzymac w bazie. Klucz chce aby byl generowany z hasha Id usera ale pytanie jest czy nie da się czegoś bardziej tak samo indywidualnego a nie oczywistego wymyslic? bo to ze kluczem są ID to jest łatwo wpaść
Crozin
Możesz sobie darować szyfrowanie danych w momencie gdy klucz ma być zbudowany w oparciu o "jawne" dane. Nadal nie odpowiedziałeś na moje pytanie.
irmidjusz
Jeśli dane będą zaszyfrowane hasłem użytkownika, to admin się do nich nie dostanie (skoro nie chcesz trzymać hasła w bazie czy gdziekolwiek indziej).

Rozwiązaniem jest... duplikowanie danych i szyfrowanie jednej kopii hasłem użytkownika, a drugiej hasłem administratora.

Karkołomne, no nie? Ale możliwe. Na tej samej zasadzie funkcjonuje np. pełne szyfrowanie wiadomości pocztowej dwukrotnie (w dwóch kopiach): zarówno kluczem publicznym odbiorcy jak i kluczem publicznym nadawcy, wówczas tylko te dwie osoby mogą odczytać treść wiadomości.
Cliassi
Dzięki za pomoc!
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.