2014-06-12 17 views
7

sha512-crypt hashing hakkında bir sorum var. Ben mysql ile güvercin ve postfix kurmak için bu tutorial bulundu. Öğreticiyi takip ettim (hafif değişikliklerle) ve her şey iyi çalışıyor. Ama bir şey anlamıyorum ki vardır:sha512-crypt mysql ve dovecot

bir kullanıcı eklemek için kullanmalıyım:

INSERT INTO `mailserver`.`virtual_users` 
    (`id`, `domain_id`, `password` , `email`) 
VALUES 
    ('1', '1', ENCRYPT('firstpassword', CONCAT('$6$', SUBSTRING(SHA(RAND()), -16))), '[email protected]'), 
    ('2', '1', ENCRYPT('secondpassword', CONCAT('$6$', SUBSTRING(SHA(RAND()), -16))), '[email protected]'); 

ve yine bu mükemmel çalışıyor, yani benim şifrenizle giriş (ve yapabilirsiniz dovecot için sadece benim şifre). Ama neden? Doğru görürsem, şifreyi rastgele bir tuzla şifreler, ancak hiçbir yere kaydetmez. Yani aynı parolayı iki kez karmaşalamak bana 2 farklı karma veriyor (denedim). Bu yüzden benim sorumum şu şekilde düşüyor: Bu hatların neden işlediğine dair açıklayıcı bir açıklama olan sha-512'nin (çevrimiçi olmayan) kısa bir açıklamasını alabilir miyim?

Teşekkür zaten

+0

Veritabanına karşı şifre/kullanıcı ile eşleşen sorguyu bir fırsat buldunuz mu? –

+0

evet, it's: 'password_query = SEÇİM şifresi FROM kullanıcı adı = '% u'' – ciem

cevap

10

tuz şifre parçası olarak kaydedilir. çağıran Örneğin:

ENCRYPT('firstpassword', CONCAT('$6$', 'FooBarBaz')) 

$ 6 $ FooBarBaz $ .T.G.7FRJqZ6N2FF7b3BEkr5j37CWhwgvPOOoccrr0bvkBbNMmLCxzqQqKJbNhnhC.583dTBLEuZcDuQe7NEe verir.

depolar hem kullanılan algoritma (6 olmak SHA512) ve tuz ('FooBarBaz') her iki $ tarafından delinated Bu.

Düzenleme:

password = ENCRYPT('user_input', `password`) 

ENCRYPT saklanan şifre tuz kapmak ve user_input kontrol ederken bu kullanacaktır: kullanabileceğiniz bir şifre kontrol etmek.

Parola için hek2mgl adresine tam not this answer numaralı telefondan ulaşabilirsiniz.

+0

Çok teşekkürler, işte bu kadar. Mysql, bir parola ile veritabanındaki gibi kaydedilmiş bir dizgiyi eşleştirmek için kolay bir yol var mı? Yani '$ 6 $ FooBarBaz $ .T.G.7FRJqZ6N2FF7b3BEkr5j37CWhwgvPOOoccrr0bvkBbNMmLCxzqQqKJbNhnhC.583dTBLEuZcDuQe7NEe' ve bunu doğru veya yanlış bir şekilde döndüren argümanlara karşı eşleştirmek için bir parola verebileceğim bir işlev? – ciem

+0

@ciem ENCRYPT bunun için kullanılabilir. Bir örnekte düzenleyeceğim. – Jim

+0

ayrıntılı cevabınız için teşekkürler – ciem