Dag allen, ik probeer mijn gegevens gecodeerd in mn database op te slaan. Zodat mocht er n onbevoegd persoon toegang krijgen tot het database, niet zo 1-2-3 de gegevens kan lezen. Vandaar heb ik gekozen voor base64_decode.
Het lijkt te werken. Maar het decoden gaat niet helemaal lekker


<?php
$vbString = '[email protected]';
mysql_query('UPDATE users SET email = "' . base64_encode($vbString) . '"' WHERE id = 1);

$outputMail = mysql_query('SELECT email FROM users WHERE id = 1');
$res = mysql_fetch_object($outputMail);

echo base64_decode($res->email);
?>

Dan krijg ik het volgende op het scherm:
pietjanhotmailco

Ook met andere gegevens als volledige naam, etc lijkt het de spaties te vergeten en af en toe het laatse karakter niet goed te decoden.

Doe ik het direct, dan werkt het wel maar als ik het opsla in mn database niet meer:

<?php
$vbString = '[email protected]';
$encoded = base64_encode($vbString);
echo 'Encoded: ' . $encoded . '<br>';
echo 'Decoded: ' . base64_decode($encoded);
?>

Iemand enig idee?
Waarom gebruik je base64_de/encode? Je geeft zelf al aan dat dit te decoderen is, en dus niet veilig is als encoding.
Beste Aar, ik wil het ook weer kunnen decoden voor de output op de pagina zelf. Dus het gaat erom dat het omkeerbaar is, maar toch niet zomaar te lezen vanuit database.
Klinkt zinloos, want een gemiddeld persoon kan zo weer zien dat het base65-encoded is, en kan het terug halen.
Als je het goed wilt doen, moet je het anders encrypten waarbij je met een sleutel deze weer terug kan halen.
ik wou ook gzinflate(str_rot13(base64_decode())) gebruiken, niemand weet toch zomaar welke methode je gebruikt?
Maar in ieder geval, met het encoded gaat het fout het encode niet correct of volledig
Je kunt de functies AES_ENCRYPT() en AES_DECRYPT() van MySQL gebruiken. Die zijn veilig, zolang je de string met de sleutel maar niet opslaat in de database (en daarvoor dus ook geen ander in de database terug te vinden gegeven gebruikt).
@ward ik heb een functie gevonden dat dus een sleutel gebruikt.
Is het veilig om een combinatie van gegevens als sleutel te gebruiken ? Bijv (userid . '-' . username)
Je komt er toch niet zomaar achter welke sleutel gebruikt is ?
Ik wil dat iedere gebruiker dus een eigen persoonlijke sleutel heeft
De sleutel moet één geheim onderdeel bevatten. Als je kolom A onleesbaar maakt met leesbaar gegevens uit kolom B + kolom C, kan iemand toch gaan zitten 'reverse engineeren'. Zelfs een moderne laptop kan honderdduizenden mogelijke combinaties uitproberen.

Je moet het eigenlijk omkeren. Stel dat iemand wéét wat een bepaald e-mailadres is dat je in de database hebt opgeslagen, zelfs al is dat versleuteld. Dan nog moet de encryptie zó sterk zijn dat de sleutel niet is af te leiden uit bekend e-mailadres + onleesbaar e-mailadres.
en als die key nog eens sha1(md5()) gecodeerd wordt
Dennis WhoCares op 04/02/2013 17:00:54

en als die key nog eens sha1(md5()) gecodeerd wordt

SHA-1 en MD5 gebruiken asymmetrische encryptie: uit de hash kun je nooit meer het oorspronkelijke gegeven halen. Je zocht naar symmetrische encryptie, omdat je uit de versleutelde data weer het oorspronkelijke, onversleutelde e-mailadres wilt kunnen halen.
Ehm, wat wort er precies bedoeld met asymmetrische encryptie ?
de uitkomst van sha1(md5($input)) is toch altijd het zelfde? Alleen bestaat altijd uit 40 karakters

Reageren