Prowadze firme i uzywam LMS, ale ostanio z racji prowadzonej dzialalnosci trzeba zglosic sie do ABW (Agencja Bezpieczenstwa Wewnetrzego) i wypelnic ankiete bezpieczenstwa itp. Problem polega na tym, ze w przypadku wlamania sie do serwera, lub uzystanie hasla do LMS'a osoba postronna otrzymuje pelen wykaz wszytskich uzytkownikow (abonentow) wraz z danymi podlegajacymi ochoronie danych osobowych. U mnie sam LMS jest chroniony certyfikatem i odpowiednimi zabezpieczeniami ktore oferuje sam Apache, ale niestety dane w bazie sa plain-text i tego nie moge bez wiekszej ingerencji w kod zrodlowy zakodowac.
Pytanie kierowane do programistów:
Czy uda sie zakodowac dane wysyłane on-line do i z bazy, najprostrzym kodem (chociazby xor) lub wykorzystujac ponizszy kod by dane w samej bazie nie byly w postaci zakodowanej, zas wyswietlane na stonach WWW byly czytelne?
WRaq
Moze podam gotowe rozwiazanie o bardzo mocnym kodowaniu danych.
definie('LIB_CRYPT_PASSWORD', 'Tu wpisujemy unikalne haslo do kodowania swoich danych') //========================================================================== === function lib_crypt_hex2bin($data) { $out = ''; $ile = strlen($data); for ($i=0; $i<$ile; $i+=2) { $out .= pack("C", hexdec(substr($data, $i, 2)) ); } return $out; } //========================================================================== === function lib_crypt_crypt_key_MD5($txt) { //global LIB_CRYPT_PASSWORD;
if (!defined('LIB_CRYPT_PASSWORD')) defined('LIB_CRYPT_PASSWORD', "DefaultVeryHardPassword"); $encrypt_key = md5(LIB_CRYPT_PASSWORD); $ctr=0; $out = ""; $ile=strlen($txt); for ($i=0; $i<$ile; $i++) { if ($ctr == strlen($encrypt_key)) $ctr=0; $out.= substr($txt, $i, 1) ^ substr($encrypt_key, $ctr, 1); $ctr++; } return $out; } //========================================================================== === function lib_crypt_decodeMD5($bin) { $txt = lib_crypt_crypt_key_MD5( lib_crypt_hex2bin ($bin) ); $tmp = ''; $ile=strlen($txt); for ($i=0;$i<$ile;$i++) { $md5 = substr($txt, $i, 1); $i++; $tmp.= (substr($txt, $i, 1) ^ $md5); } return $tmp; } //========================================================================== === function lib_crypt_encodeMD5( $bin ) { srand( (double) microtime() * 1000000 ); $encrypt_key = md5( rand( 0, 32000 ) ); $ctr = 0; $tmp = ''; $ile=strlen( $bin ); for ($i=0;$i<$ile;$i++) { if ($ctr==strlen($encrypt_key)) $ctr=0; $tmp.= substr($encrypt_key,$ctr,1) . (substr($bin,$i,1) ^ substr($encrypt_key,$ctr,1)); $ctr++; } return bin2hex(lib_crypt_crypt_key_MD5($tmp)); } //========================================================================== === //funkcja kodujaca zwraca 4x wiekszy ciag znakow niz wejsciowy lub blob bez uzycia funkcji bin2hex !!! function lib_crypt_encrypt($txt) { srand( (double) microtime() * 1000000 ); $encrypt_key = md5( rand(0, 32000) ); $ctr = 0; $tmp = ''; $ile=strlen($txt); for ($i=0; $i<$ile; $i++) { if ($ctr==strlen($encrypt_key)) $ctr=0; $tmp.= substr($encrypt_key,$ctr,1) . (substr($txt,$i,1) ^ substr($encrypt_key,$ctr,1)); $ctr++; } return bin2hex(lib_crypt_crypt_key_MD5($tmp)); } //========================================================================== === //po zdekodowaniu otrzymujemy 4x mniejszy tekst function crypt_decrypt($txt) { $txt = lib_crypt_crypt_key_MD5( lib_crypt_hex2bin($txt) ); $out = ''; $ile = strlen($txt); for ($i=0; $i<$ile; $i++) { $md5 = substr($txt, $i, 1); $i++; $out.= (substr($txt, $i, 1) ^ $md5); } return $out; } //========================================================================== ===
----------- WRaq