0
我試圖通過使用觸發器在PostgreSQL數據庫中加密密碼,但我無法讓它工作,我不知道我的錯誤在哪裏。 下面是代碼:加密密碼觸發器
ERROR: record "new" is not assigned yet DETAIL: The tuple structure of a not-yet-assigned record is indeterminate. CONTEXT: PL/pgSQL function encrypt_password() line 3 at assignment
我如何進入我插入,如果不是與NEW
記錄:
CREATE TABLE mms_user (
uid serial,
mail text NOT NULL,
passwd text NOT NULL,
usertype integer NOT NULL,
PRIMARY KEY (uid)
);
CREATE FUNCTION encrypt_password() RETURNS TRIGGER AS $$
BEGIN
NEW.passwd = digest(NEW.passwd, 'sha1');
RETURN NEW; END; $$LANGUAGE 'plpgsql';
CREATE TRIGGER encrypt_userdata AFTER INSERT ON mms_user EXECUTE PROCEDURE encrypt_password();
INSERT INTO mms_user values (default, 'who', 'me', 1);
它在執行的時候說,這?
只使用散列函數是不夠的,只是添加一個鹽沒有提高安全性。取而代之的是用隨機鹽對HMAC進行大約100毫秒的持續時間並用散列表保存鹽。使用諸如password_hash,PBKDF2,Bcrypt和類似函數的函數。關鍵是要讓攻擊者花費大量時間通過強力查找密碼。 – zaph
@RyanVincent哎呀,對不起我的錯誤,我不是故意處理你的評論,更正。 – zaph
@Roberto Sanchez SHA1是一種加密散列函數,不是加密。哈希函數是單向函數,也就是說它不能恢復到它的輸入。加密操作系統是雙向的,有一個密鑰,加密的數據可以通過密鑰恢復到原始值。 – zaph