Bu soru yaşıyorum belirli bir programlama sorunu hakkında - benim kod (yazılım ve algoritma) bir veritabanında depolamak, kullanıcı kimlik bilgileri için yeterli olduğundan emin olmak istiyorum.
// Get a 32 character salt like '69Mt6nexL1rsjWnu011S53MpB/WmT4Vl'
$passwordSalt = Security::generateBase64Salt();
$user = new User();
$user->setUsername($_POST['username']);
// $_POST['password'] comes in as a 128 character string
// Client side javascript is used to sha512 the string before sending it over POST
// see http://pajhome.org.uk/crypt/md5/
// This prevents novice eavesdroppers from capturing the raw password in plaintext
$user->setPassword(
hash('sha512', $passwordSalt.$_POST['password'])
);
$user->setPasswordSalt($passwordSalt);
$user->save();
Burada belirli bir parola veritabanı girişi bulunuyor:
Password:
69a78a7586a111b8a567b2d4f42f93f01fb59d337f7fa3c35949a66b246095778c1fa01ff4026abace476091e1e9a183bbdec1c31b12ce3f786921895c98cf6f
Salt:
69Mt6nexL1rsjWnu011S53MpB/WmT4Vl
Questions:
- Bu algoritma ile herhangi bir miras kusurları var mı?
- Bu tuz + parola karma olarak aynı veritabanı ve tablodaki tuz saklamak için Tamam mı?
- Ben tabloda birkaç yüz bin kullanıcı varsa (birkaç saniye büyüklüğüne) büyük 128 karakter şifre neden giriş performans sorunlarınız mı?
- Bu veriler orijinal şifre üretmek için ters olabilir?
For Fun:
Eğer tuz ve tuz + şifre hash kullanarak orijinal şifre ile bana sağlayabilir eğer 5 $ paypal edeceğiz.