MySQL資料庫的雙向加密方式

來源:互聯網
上載者:User

雙向加密
    就讓我們從最簡單的加密開始:雙向加密。在這裡,一段資料通過一個密鑰被加密,只能夠由知道這個密鑰的人來解密。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.