2010-04-02 10 views
7

Zastanawiam się, czy użyję funkcji skrótu PHP do wygenerowania skrótów sha512, jak mogłoby wyglądać moje pole tabeli MySQL, aby móc przechowywać zakodowane hasło.Przechowywanie skrótów SHA-512 w MySQL

Oto moje aktualne hasło MySQL układ pola

char(40) 
+0

Zapoznaj się z sekcją podręcznika MySQL na temat "Typy danych": http://dev.mysql.com/doc/refman/5.1/en/data-types.html – bdl

Odpowiedz

17

sha512 hash jest reprezentowany jako długi ciąg znaków-128.

Na przykład następujący fragment kodu:

$sha512 = hash('sha512', "Hello, World!"); 
echo strlen($sha512); 

da to wyjście:

128 


co oznacza Twój char(40) jest zbyt mała, i że należy użyć char(128) .


Innym rozwiązaniem byłoby przechowywanie go w formie binarnej, a nie ciąg - co oznaczałoby 64 bajty.

Należy jednak zauważyć, że w niektórych przypadkach może być trudniej radzić sobie z tą reprezentacją, jak sądzę.

+0

Czy możesz wyjaśnić skąd masz 64 bajty? Próbuję zrozumieć matematykę. –

+1

sha512 jest reprezentowany jako 128 znaków szesnastkowych; podczas korzystania z szesnastkowych używa się dwóch cyfr do reprezentowania jednego bajtu (od 0x00 do 0xFF); więc do przechowywania wartości binarnej, która może być reprezentowana przez 128 znaków szesnastkowych, potrzeba 64 bajtów, jeśli przechowujesz ją jako binarną, a nie szesnastkową. –

+0

To ma sens. Dzięki! –

Powiązane problemy