MySQL資料庫的雙向加密方式

來源:互聯網
上載者:User

閱讀以下文字之前還可以參見下面的串連

1.http://dev.mysql.com/doc/refman/5.0/en/encryption-functions.html

 

如果你正在運行使用MySQL的Web應用程式,那麼你把密碼或者其他敏感資訊儲存在應用程式裡的機會就很大。保護這些資料免受駭客或者窺探者的擷取是一個令人關注的重要問題,因為您既不能讓未經授權的人員使用或者破壞應用程式,同時還要保證您的競爭優勢。幸運的是,MySQL帶有很多設計用來提供這種型別安全的加密函數。本文概述了其中的一些函數,並說明了如何使用它們,以及它們能夠提供的不同層級的安全。

 

雙向加密

 

 

就讓我們從最簡單的加密開始:雙向加密。在這裡,一段資料通過一個密鑰被加密,只能夠由知道這個密鑰的人來解密。MySQL有兩個函數來支援這種類型的加密,分別叫做ENCODE()和DECODE()。下面是一個簡單的執行個體:

 

mysql> INSERT INTO users (username, password)

 

VALUES ('joe', ENCODE('guessme', 'abracadabra'));

 

Query OK, 1 row affected (0.14 sec)

 

 

其中,Joe的密碼是guessme,它通過密鑰abracadabra被加密。要注意的是,加密完的結果是一個二進位字串,如下所示:

 

mysql> SELECT * FROM users WHERE username='joe';

 

+----------+----------+

 

| username | password |

 

+----------+----------+

 

| joe | ¡?i??!? |

 

+----------+----------+

 

1 row in set (0.02 sec)

 

 

abracadabra這個金鑰組於恢複到原始的字串至關重要。這個密鑰必須被傳遞給DECODE()函數,以獲得原始的、未加密的密碼。下面就是它的使用方法:

 

mysql> SELECT DECODE(password, 'abracadabra')

 

FROM users WHERE username='joe';

 

+---------------------------------+

 

| DECODE(password, 'abracadabra') |

 

+---------------------------------+

 

| guessme |

 

+---------------------------------+

 

1 row in set (0.00 sec)

 

 

應該很容易就看到它在Web應用程式裡是如何啟動並執行——在驗證使用者登入的時候,DECODE()會用網站專用的密鑰解開儲存在資料庫裡的密碼,並和使用者輸入的內容進行對比。假設您把PHP用作自己的指令碼語言,那麼可以像下面這樣進行查詢:

 

undefined undefined

$query = "SELECT COUNT(*) FROM users WHERE

 

username='$inputUser' AND DECODE(password,

 

'abracadabra') = '$inputPass'";?>

 

注意:雖然ENCODE()和DECODE()這兩個函數能夠滿足大多數的要求,但是有的時候您希望使用強度更高的加密手段。在這種情況下,您可以使用AES_ENCRYPT()和AES_DECRYPT()函數,它們的工作方式是相同的,但是加密強度更高。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.