Cliassi
25.08.2012, 15:19:30
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
25.08.2012, 18:01:45
Cliassi
25.08.2012, 18:14:15
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
26.08.2012, 08:54:06
Po co kombinujesz? sha256 + salt do hashowania hasel wystarczy, robisz powazny blad dajac mozliwosc relatywnie latwego odkodowania hasla poprzez algorytm symetryczny.
Cliassi
26.08.2012, 12:41:16
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
26.08.2012, 14:23:09
function encryptData($value, $key){
$text = $value;
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
$crypttext = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $text, MCRYPT_MODE_ECB, $iv);
return $crypttext;
}
function decryptData($value, $key){
$crypttext = $value;
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
$decrypttext = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $crypttext, MCRYPT_MODE_ECB, $iv);
return trim($decrypttext); }
I daj jako $key swój klucz
Cliassi
26.08.2012, 19:12:18
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
26.08.2012, 19:24:34
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
26.08.2012, 19:30:54
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
26.08.2012, 19:33:29
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
26.08.2012, 19:46:34
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
26.08.2012, 19:50:11
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
28.08.2012, 21:41:36
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.