2012-08-02 27 views
0

我想知道是否有可能在PHPmyAdmin中使用SQL來獲得一個字段來顯示只有散列字符或類似的東西,這樣未經授權的用戶將無法在字母和數字中看到這些字符?這是爲我創建的密碼字段。如何在phpmyadmin/sql中設置一個散列字段?

謝謝

+2

如果這是用於存儲密碼安全地,[檢查出該SO文章](http://stackoverflow.com/questions/1054022/best-way-to-store-password-in-database )。 – Matt 2012-08-02 15:23:09

回答

2

要直接回答你的問題,是的,MySQL有散列函數。他們列出了here

但是,如果您確實想要安全地存儲您的密碼,請閱讀this article

UPDATE

說,例如,您正在使用SHA2()散列的密碼(使用你自己的判斷閱讀上面的文章後,確定要使用的哈希算法)。

要比較認證字符串(請參閱:「用戶輸入密碼從登錄屏幕」)到存儲的密碼(閱讀:「原始用戶作爲他/她的密碼輸入的密碼」),你會做這樣的事情僞代碼:

$passwordHash  = getPasswordForUser($userName); 
$authenticationHash = sha2($authenticationPassword); 

if ($passwordHash === $authenticationHash) { 
    // successful login. do something here. 
} 
+0

嗨馬特,我有點困惑,所以它不像使用'PASSWORD(str)?'或換句話說'SELECT PASSWORD('TeacherPassword')' – user1394925 2012-08-02 15:51:34

+0

從MySQL手冊:**注意** 'PASSWORD()'函數被MySQL服務器中的認證系統使用;你不應該在你自己的應用程序中使用它。爲此,請考慮'MD5()'或'SHA2()'。有關在應用程序中安全地處理密碼和身份驗證的更多信息,請參閱RFC 2195的第2部分(質詢 - 響應身份驗證機制(CRAM))。 – Matt 2012-08-02 15:55:18

+0

哈希函數往往是*單向*算法。爲了將認證字符串與存儲的密碼進行比較,必須對認證字符串執行散列,然後將散列與存儲的密碼(已經被散列)進行比較。 – Matt 2012-08-02 15:56:27

相關問題