我有表,其中包含字段ID,用戶名,密碼和鹽的MySQL:如何改變SHA1和SALT加密口令表
實施例:
ID:1
用戶名:admin
密碼:11ca894 9f9462890f2535c9a43ac52b8c10a9342
鹽:8d17f0de29daed0f3b4cd38f980683d01ec50729
沒有。這樣的記錄。
我的問題是:如何更改該表中所有用戶的密碼。
我想爲每個用戶創建一個新密碼。這意味着我需要一個新的SHA1哈希和鹽。我怎樣才能做到這一點。
感謝
我有表,其中包含字段ID,用戶名,密碼和鹽的MySQL:如何改變SHA1和SALT加密口令表
實施例:
ID:1
用戶名:admin
密碼:11ca894 9f9462890f2535c9a43ac52b8c10a9342
鹽:8d17f0de29daed0f3b4cd38f980683d01ec50729
沒有。這樣的記錄。
我的問題是:如何更改該表中所有用戶的密碼。
我想爲每個用戶創建一個新密碼。這意味着我需要一個新的SHA1哈希和鹽。我怎樣才能做到這一點。
感謝
如果你有登錄代碼,那麼你可以調試它並檢查它是如何工作的。爲其創建適當的腳本並使用以下查詢更新密碼。
update be_users set password=SHA1(CONCAT( '$sha1', '$newsalt')), salt='your salt' where username='your username';
試一下這個
如果您沒有在DB明文原密碼(你當然不應該!),它不會成爲一個步驟。
您需要做的是添加另一列,併爲其指定一個名稱,如「hashtype」 - 此名稱指示條目是否已從舊哈希升級到新哈希。
然後在您的登錄代碼中,在用戶提交密碼並正確對存儲的數據庫哈希進行散列之後,使用用戶輸入的密碼爲您的新方法生成新的散列,更新數據庫中的散列並將hashtype設置爲新的。
否則,你可以做一些瘋狂的事情,如清除所有的用戶密碼,並強制通過電子郵件或其他方式重置密碼。
這是IMO的最佳解決方案。 –
假設你希望每個人都具有相同的固定密碼,和散列只包含連接而成的密碼和鹽的SHA1校驗和,這將是所有需要:
UPDATE users SET password = SHA1(CONCAT('newpassword', salt));
這使原來的鹽(這不是一個真正的問題),但當然,給每個人使用相同的密碼是非常不安全的。如果你想爲每個用戶生成一個不同的密碼,你需要生成代碼並將它們分別發送給它們,並且該代碼也可以更新每個用戶的哈希密碼。
或者,您可以臨時添加一列'newpassword',使用類似於上面的使用該列的UPDATE命令,然後刪除它。但是這並不能解決如何爲用戶獲取新密碼的問題。
他們基本上可以用一個簡單的'UPDATE'查詢改變。你能否澄清一下改變它們的問題? – Teneff
@Teneff:你的意思是直接在表上更新查詢? – Sky