2013-09-06 18 views
7

Parolaları kodlama konusunda bazı sorunlarım var, nasıl yapabilirim? Kodlama md5Parolaları PostgreSQL ile nasıl şifrelerim?

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); 

*** Hata ** *

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

İlk satırdaki ilk karakter, hatanın olduğu yerdir. "OLUŞTURUN VEYA FONKSİYONUNU DEĞİŞTİRİN" ifadesinin üstündeki çöpünüz var demektir. –

+0

Nasıl dediğinizi denedim ama hatam var. – Unknown

cevap

24

digest(data text, type text) returns bytea; tipi geçerli sözdizimi değil.

Bunun yerine bcrypt kullanmanızı öneririz.

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

Daha sonra ...

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

Ve şifreyi kontrol: Hiçbir ek fonksiyon tanımları gereklidir Bcrypt Crafted Software ve Jeff Atwood tarafından tavsiye edilmektedir

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

. official pgcrypto docs da ilgi çekici olabilir.

+2

Teşekkürler, sen bana yardım ettin. – Unknown