簡體   English   中英

如何在表中更改SHA1和SALT加密的密碼

[英]How to change SHA1 and SALT encrypted passwords in table

我在mysql中有表格,其中包含字段ID,用戶名,密碼和鹽:

例:

編號 :1

用戶名 :admin

密碼 :11ca8949f9462890f2535c9a43ac52b8c10a9342

:8d17f0de29daed0f3b4cd38f980683d01ec50729

沒有 這樣的記錄。

我的問題是:如何更改該表中所有用戶的密碼。

我想為每個用戶創建一個新密碼。 這意味着我需要一個新的SHA1哈希和鹽。 我怎樣才能做到這一點。

謝謝

假設您希望每個人都使用相同的固定密碼,並且哈希僅由串聯密碼和salt的SHA1校驗和組成,那么這將是全部:

UPDATE users SET password = SHA1(CONCAT('newpassword', salt));

這樣可以保留原始鹽(這並不是真正的問題),但是為所有人提供相同的密碼當然是非常不安全的。 如果要為每個用戶生成一個不同的密碼,則將需要代碼來分別生成和發送給他們,並且該代碼也可能會更新每個用戶的哈希密碼條目。

或者,您可以臨時添加一列“ newpassword”,使用與上面使用該列的上述類似的UPDATE命令,然后將其刪除。 但這並不能解決如何將新密碼提供給用戶的問題。

如果您在數據庫中沒有純文本格式的原始密碼(並且您當然不應該這樣做!),那么這將不是一個一步的過程。

您需要做的是添加另一列,並給它一個類似於“哈希類型”的名稱-該名稱指示條目是否已從舊哈希升級到新哈希。

然后在您的登錄代碼中,在用戶提交密碼並針對存儲的數據庫哈希正確哈希之后,使用用戶輸入的密碼根據您的新方法生成新哈希,更新數據庫中的哈希,並將哈希類型設置為new 。

否則,您可以執行瘋狂的操作,例如清除所有用戶密碼,然后通過電子郵件或其他方式強制重置密碼。

如果您有登錄代碼,則可以對其進行調試並檢查其工作方式。 為此創建適當的腳本並使用以下查詢更新密碼。

update be_users set password=SHA1( CONCAT(  '$sha1',  '$newsalt' )), salt='your salt' where username='your username';

嘗試這個

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM