当前位置: 动力学知识库 > 问答 > 编程问答 >

encryption - How do I encrypt passwords with PostgreSQL?

问题描述:

I have some problems with encoding passwords,how can I do it. Type of encoding md5

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

网友答案:

digest(data text, type text) returns bytea; is not valid syntax.

I recommend using bcrypt instead. No additional function definitions are required:

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

Later...

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

And checking the password:

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

Bcrypt is recommended by Crafted Software and Jeff Atwood. The official pgcrypto docs may also be of interest.

分享给朋友:
您可能感兴趣的文章:
随机阅读: