2013-09-06 33 views
7

Mam pewne problemy z kodowaniem haseł, w jaki sposób mogę to zrobić. Rodzaj kodowania MD5Jak szyfrować hasła za pomocą PostgreSQL?

digest(data text, type text) returns bytea; 
CREATE OR REPLACE FUNCTION md(bytea) returns text AS $$ 
    SELECT encode(digest($1, 'sha1'), 'md5') 
$$ LANGUAGE SQL STRICT IMMUTABLE; 

INSERT INTO "login"(login, password, employee_id) 
VALUES ('email',crypt('password', md('md5')), 1); 

*** Error ** *

ERROR: syntax error at or near "digest" 
SQL state: 42601 
Character: 1 
+1

Pierwszym znakiem w pierwszym wierszu jest błąd. Masz śmieci nad swoim "CREATE OR REPLACE FUNCTION" –

+0

Próbowałem, jak powiedziałeś, ale mam błąd. – Unknown

Odpowiedz

24

digest(data text, type text) returns bytea; nie jest prawidłowa składnia.

Polecam zamiast tego używać bcrypt. wymagane żadne dodatkowe definicje funkcji są:

INSERT into "login" (login, password, employee_id) 
    VALUES ('email',crypt('password', gen_salt('bf')); 

Później ...

UPDATE table SET password = crypt('password',gen_salt('bf')) 

i sprawdzanie hasło:

SELECT ... FROM table 
    WHERE password is NOT NULL 
     AND password = crypt('password-to-test',password); 

Bcrypt jest rekomendowana przez Crafted Software i Jeff Atwood. The official pgcrypto docs może również być interesujące.

+2

Dzięki, pomogłeś mi. – Unknown