2014-03-28 51 views
0
$key = md5('secret password'); 
// this^would be supplied by the user every login, never stored 
Crypt::setKey($key); 
$encrypted = Crypt::encrypt('secret message'); 
// this^would be stored in a database 
$decrypted = Crypt::decrypt($encrypted); 
return $decrypted; 

這會比僅僅傳遞密鑰的純文本更安全嗎?我想知道如何保護敏感數據。在Laravel中使用AES有多安全?

回答

1

如果有人知道你正在使用的算法(即,只是md5),那麼它就和「祕密密碼」一樣安全。如果編碼的信息被泄露,它可能會有一點幫助,但更安全的是用鹽來散列「祕密密碼」。如果你確實想保持這個「祕密消息」的安全,你可以使用password_hash函數(http://php.net/manual/en/function.password-hash.php)在加密消息之前對密鑰進行編碼。

+0

以這種方式使用AES有什麼意義?如果我默認使用應用程序密鑰進行加密,那麼有人可以進入我的服務器並獲取密鑰,所有內容都可以被解密。 – zackify

+0

如果密鑰是一個用戶輸入,然後你使用password_hash密鑰加密之前,它是相當危險的安全,只要用戶輸入(密碼)不會在整個地方或任何地方重複使用。 password_hash旨在花費很長時間來暴力。 – Helpful

+0

我想我明白你在看什麼,但是:一個靜態的鍵,放入頁面,用編碼是一個壞主意。就像你說的,有人可以得到並利用它。一個可變的密鑰(如用戶輸入)是很好的 - 只要它沒有存儲在任何地方 - 而password_hash可能是矯枉過正的。 – Helpful