Door
Dennis WhoCares
op 04-02-2013 15:13
gewijzigd op 04-02-2013 15:14
2.031 views
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:
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
Uit $data = sha1($emailadres) kun je nooit meer afleiden welk $emailadres er versleuteld is opgeslagen in $data: asymmetrische encryptie is eenrichtingsverkeer.
Wat jij zoekt, is tweerichtingsverkeer en symmetrische encryptie: een versleuteld gegeven moet weer kunnen worden ontsleuteld.
Aha, dat is al beter, zolang $_SESSION['userid'] en $userR->user_username maar niet openbaar zijn. Voor $_SESSION['userid'] kun je bijvoorbeeld een willekeurige BIGINT in MySQL gebruiken; dat is beter dan user-ID's voorspelbaar tellen: 1, 2, 3, enzovoort.
Omdat MD5 een veel kleinere bitdiepte heeft dan SHA-1, heeft sha1(md5(...)) geen zin. Je benut de kracht van SHA-1 niet, maar zit vast aan kleinere hash van MD5. Het lijkt misschien onlogisch, maar de kortere vorm is veiliger:
Ik zal deze functie zeker gaan gebruiken volgende keren met m'n wachtwoorden opslaan, ipv sha1()
Ward van der Put op 04/02/2013 18:32:17
Omdat MD5 een veel kleinere bitdiepte heeft dan SHA-1, heeft sha1(md5(...)) geen zin. Je benut de kracht van SHA-1 niet, maar zit vast aan kleinere hash van MD5. Het lijkt misschien onlogisch, maar de kortere vorm is veiliger:
Ahh ik begrijp wat je bedoeld, dus zonder de md5 ertussen is eigenlijk nog beter.
Ik houdt dit in mijn achterhoofd, dankjewel :)
Nou nog het allerlaatste betreft deze topic.
Het is natuurlijk niet veilig om de key in een sessie op te slaan, dus zal ik de key op elke pagina opnieuw laten opvragen? (in dit voorbeeld userid-username)