簡體   English   中英

PHP-使用一次性密碼存儲加密密碼

[英]PHP - Using a one-time pad to store encrypted passwords

鑒於一次性墊是堅不可摧的(據我所知,請隨時糾正我),如果我要生成一個墊,並在創建用戶時使用相同的墊來加密網站的密碼,將加密的密碼存儲在我的數據庫中,這是一種安全的方法嗎? 換句話說,只要沒有人看到該防護墊是什么,就可以永久保留同一防護墊嗎?

我應該改用mcrypt之類的東西嗎?

使用一次性鍵盤的操作是對密碼進行加密 加密密碼不是最佳方法,因為無論您怎么做,您都可以解密密碼。 您的應用程序本身必須有權訪問密鑰(或密鑰,因為每個一次性密碼只能加密一個密碼),因此如果攻擊者具有足夠的特權,也可以這樣做。

這就是為什么我們使用哈希函數存儲密碼的原因,它們是單向的,您可以檢查輸入的密碼是否導致相同的哈希,但是您無法找回原始密碼。 PHP提供了函數password_hash()來生成此類哈希值,它通過生成隨機鹽來處理所有陷阱,並使用慢速BCrypt來哈希密碼。

一個時間頁中的“一次”表示給定密鑰僅用於加密單個明文。 換句話說,您需要加密的每個項目都有一個單獨的填充板。 那就是使它們牢不可破的原因。 由於這些單獨的護墊必須存放在某個地方,因此您很容易受到傷害。 相反,請使用經過廣泛使用和測試的庫(例如mcrypt),並使用salt加密密碼

暫無
暫無

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

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